C_01
description
Transcript of C_01
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
1
Noţiuni fundamentale
11 Definiţii
Informaţia reprezintă un mesaj (de orice natură) care aduce o precizare icircntr-o problemă ce
comportă un anumit grad de incertitudine
Boar BH The Art of Strategic Planning for Information Technologies 2nd edition John W iley 2001
Există două aspecte ale informaţiei
1 Semantic ndash se referă la icircnţelegerea informaţiei ca idee cunoaştere mesaj care se
transmite pe anumite medii fizice sau biologice numite suporturi de informaţie
2 Sintactic ndash precizează modul de prezentare a informaţiei
O mulţime este informaţională dacă elementele sale sunt informaţii Ea se poate defini icircn
a Comprehensiune (prin enunţarea proprietăţii de care se bucură toate elementele
mulţimii)
b Extensie (prin nominalizarea tuturor elementelor mulţimii respective)
Există trei elemente ce caracterizează o informaţie
1 Mulţimea informaţională icircn care se află informaţia ca element
2 Forma de reprezentare (face posibilă deosebirea informaţiilor icircntre ele)
3 Valoarea informaţiei
Datele sunt numere caractere imagini sau alte reprezentări simbolice care pot fi folosite de
către om sau pot fi icircnregistrate icircn memoria calculatorului şi prelucrate de acesta sau transmise
pe o linie de comunicaţie
Noţiuni fundamentale
________________________________________________________________
2
Datele icircn sine nu au bdquosemnificaţierdquo Atunci cacircnd datele sunt interpretate de către un anumit
sistem de prelucrare ele devin informaţie
Algoritmul este un sistem de reguli care transformă informaţia iniţială icircn una finală trecacircnd
printr-un şir de informaţii intermediare
Algoritmul se caracterizează prin
1 Generalitate ndash rezolvă toate problemele din clasa respectivă de probleme
2 Finitudine ndash numărul de transformări intermediare aplicate informaţiei iniţiale icircn
scopul de a obţine informaţia finală este finit
3 Realizabilitate (efectivitate) - există posibilitatea efectuării operaţiilor prevăzute icircn
instrucţiunile algoritmului
4 Claritate ndash se caracterizează printr-o descriere precisă cu specificarea riguroasă şi
fără ambiguităţi a acţiunilor care urmează să se execute
5 Automatism - algoritmul poate fi aplicat fără ca instrucţiunile sale să ceară un efort
de gacircndire deosebit utilizatorul poate executa icircn mod mecanic operaţiile simple
indicate
Calculatorul reprezintă un ansamblu complex de echipamente electronice care pe baza unor
date de intrare şi a unor programe furnizate şi elaborate de om generează la ieşire informaţii El
este icircn acelaşi timp un mijloc de prelucrare automată a informaţiilor prelucracircndu-le sub o
formă cuantificată şi rezolvacircnd problemele icircn conformitate cu anumiţi algoritmi
Componentele fizice care alcătuiesc un calculator reprezintă hardware-ul Programele care icirci
precizează calculatorului ldquoce să facărdquo alcătuiesc software-ulhellip+peopleware
Observatie Peopleware este un termen utilizat pentru a desemna un al treilea aspect de bază al
tehnologiei informatice celelalte două aspecte fiind hardware şi software Peopleware [Con 01]
se referă la acele aspecte care au legatură cu rolul oamenilor icircn dezvoltarea sau utilizarea de
software de calculator şi sisteme hardware inclusiv aspecte cum ar fi productivitatea
dezvoltatorilor munca icircn echipă dinamica de grup psihologia de management de proiect de
programare factori organizaţionali elementele de design pentru interfaţa umană interacţiunea
om-maşină etc
Calculatorul este o maşină programabilă definită de două caracteristici esenţiale
pentru un anumit set de instrucţiuni răspunde icircntr-o manieră foarte bine definită Prin
instrucţiune se icircnţelege o comandă elementară (de bază) a unui calculator Setul de
instrucţiuni al unui calculator formează lista tuturor comenzilor elementare din limbajul
maşină al calculatorului
poate executa o listă de instrucţiuni preicircnregistrate (un program) Fără programe
calculatoarele sunt nefolositoare
SISTEME DE CALCUL (COMPUTER SYSTEMS)
Coponenta HARDWARE
Componenta SOFTWARE
Componenta Web - Retele si sistemul Internet
Componenta de securitate informatica
Componenta de Aplicatii-programe sepecializate sisteme informatice
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
3
Informatica reprezintă disciplina care oferă metode de rezolvare a problemelor cu
ajutorul calculatorului Academia Franceza (1966) a definit informatica ca fiind ldquoştiinţa
prelucrării raţionale icircndeosebi prin maşini automate a informaţiei considerată ca
suport al cunoştinţelor umane şi al comunicărilor icircn domeniile tehnice economice şi
socialerdquo fr Information fr Automatique Informatique )
Informatica restabileşte nu numai unitatea matematicilor pure şi a celor aplicate a
tehnicii concrete şi a matematicilor abstracte dar şi cea a ştiinţelor naturii ale omului şi
ale societăţii Reabilitează conceptele de abstract şi de formal şi icircmpacă arta cu ştiinţa nu
numai icircn sufletul omului de ştiinţă unde erau icircntotdeauna icircmpăcate ci şi icircn filosofarea
lor Grigore C Moisil (1906-1973)
Icircn urma prelucrării icircn concordanţă cu cerinţele informaţionale datele devin informaţii
Prelucrarea implică
1 Culegerea datelor
2 Prelucrarea propriu-zisă
3 Distribuirea rezultatelor prelucrării
Prelucrarea datelor se poate face
1 Manual
2 Automat
Prelucrarea automată a datelor presupune
a Resurse materiale (echipamente electronice de calcul ndash calculatoare etc)
b Resurse umane (operatori programatori etc)
Noţiuni fundamentale
________________________________________________________________
4
Resursele materiale şi umane coexistă şi formează un ansamblu numit Sistem de Prelucrare
Automată a Datelor (SPAD)
Prelucrarea automată a datelor presupune existenţa unui proces de reglare icircntre Introducerea
datelor Prelucrarea datelor Extragerea informaţiei
Etapele prelucrării automate a datelor Introducerea datelor Prelucrarea datelor Extragerea informaţiei
Culegere
Verificare
Codificare
Transmitere
Clasificare
Sortare
Calcule
Arhivare
Memorare
Regăsire
Decodificare
Difuzare
Sistemul informaţional reprezintă un ansamblu de fluxuri şi circuite informaţionale
organizate icircntr-o concepţie unitară care asigură legătura dintre sistemul decizional (de
conducere) şi sistemul operaţional (de execuţie)
Sistemul informatic este un ansamblu structurat de elemente intercorelate funcţional pentru
culegerea prelucrarea transmiterea şi stocarea informaţiilor cu ajutorul mijloacelor automate
de prelucrare a datelor Scopul acestuia este de a automatiza procesul informaţional şi de a
fundamenta deciziile Sistemul informatic este inclus icircn cel informaţional şi icirci dă acestuia noi
valenţe sub aspect calitativ şi cantitativ Acest lucru se realizează prin implementarea de către
sistemul informatic a unor modele matematice şi prin utilizarea tehnicii electronice de calcul
Sistemul informatic include
1 Cadrul organizatoric şi datele vehiculate
2 Resursele umane
3 Metodele şi tehnicile de proiectare
4 Echipamentele electronice de calcul
5 Sistemul de programe
12 Evoluţia calculatorului
1642 - Blaise Pascal (matematician fizician dar şi teolog) creează prima maşină de calculat
icircn scopul de a-l ajuta pe tatăl său la calculul taxelor Această maşină putea numai să adune I-
au fost necesari 2 ani pentru realizarea acestei maşini dar odată creată a reuşit să o producă icircn
50 de copii care s-au vacircndut imediat
1822 - Charles Babbage inventator englez proiectează primul motor diferenţial matematic
icircn scopul uşurării realizării tabelelor matematice ce erau folosite icircn industrie navigaţie şi
domeniul bancar Babbage nu a putut să realizeze niciodată acest proiect datorită lipsei de
tehnologii care să-i producă piesele componente la precizia dorită Icircn cinstea sa la Londonrsquos
Science Museum există un exemplar al acestui motor diferenţial realizat icircn 1990 după proiectul
amănunţit pe care inventatorul l-a lăsat
1884 - Herman Hollerith inventator american realizează prima maşină automată de calculat
pe bază de cartele perforate
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
5
1926 - Dr Julius Lilienfield creează conceptul primului tranzistor folosit pentru amplificare
(vacuum tubes)
1936 - Alan Turing foloseşte noţiunea de ldquomaşină Turing universală pentru a descrie un
calculator universal care poate executa orice program Programele erau stocate icircn memoria
calculatorului reprezentate ca şiruri de numere
1939 ndash Este proiectat primul calculator digital John Atanasoff lector la IOWA State
University icircmpreună cu doctorandul Clifford Berry au pus bazele primului computer digital
Pentru prima oară s-a pus problema reprezentării numerelor folosind condensatori pentru a
stoca sarcini electrice
1944 - Este realizat primul calculator de scară mare Mark I conceput de Howard Aiken
profesor la Harvard University Computerul Mark I a fost cel mai mare calculator realizat pacircnă
atunci Compus din peste 750 000 piese şi cacircntărind peste 5 tone el putea să adune să scadă să
icircnmulţească sau să icircmpartă două numere (pacircnă la 23 digiţi) icircn numai cacircteva secunde
1945 - John von Neumann analizează starea de fapt a calculatoarelor şi scrie un raport intitulat
``First Draft of a Report on the EDVAC (Prima ciornă a unui raport despre EDVAC) icircn care
sugerează o arhitectură revoluţionară programul nu mai este reprezentat de felul icircn care sunt
cuplate unităţile funcţionale ci este stocat icircn memorie fiind descris folosind un limbaj numit
cod-maşină Icircn cod-maşină operaţiile de executat sunt codificate sub forma unor numere
numite instrucţiuni Programul de executat este descris printr-un şir de instrucţiuni care se
execută consecutiv Caracteristica principala a masinii von Neuman este ca functionarea ei este
un proces secvential la un moment dat se executa o singura instructiune iar executarea unei
instructiuni poate sa inceapa numai dupa ce s-a incheiat executarea celei precedente In toate
operatiile participa unitatea centrala si registrii acesteia
1946 ndash Este realizat la University of Pennsylvania calculatorul ENIAC (the Electronic
Numerical Integrator and Computer) cel mai puternic pacircnă la acea dată Cacircntărea cca 30 tone
1946 ndash Este realizat calculatorul EDVAC (the Electronic Discrete Variable Computer) mai
puternic Arhitectura acestui calculator şi modul de stocare a programelor sunt asemănătoare
cu cele ale calculatoarelor de astăzi
1954 - Apare primul limbaj de programare - limbajul FORTRAN inventat de John Backus
angajat al IBM
1958 - Jack Kilbz (angajat laTexas Instruments) inventează primul circuit integrat
1964 - Tom Kurtz şi John Kemeny (profesori la Dartmouth University) creează limbajul de
programare BASIC (Beginners All Purpose Szmbolic Instruction Language) marcacircnd
icircnceputul programării intuitive
1970 - Compania Busicom foloseşte icircn producţie de serie circuitele integrate la construcţia
calculatoarelor
Noţiuni fundamentale
________________________________________________________________
6
1974 - Marcian Hoff proiectează primul microprocessor circuitul 4004 ce opera pe 4 biţi şi
conţinea peste 2000 de tranzistoare Proiectul lui Hoff a fost respins de companiile
producătoare de atunci
1974 - Intel realizează primul microprocesor 8080 ce opera pe 8 biţi O serie de alte companii
ca Motorola şi Zilog au icircnceput să realizeze o serie de cipuri similare
1975 - Se vinde primul computer Altair Acesta era un calculator cu procesor 8080 şi putea fi
asamblat de oricine Costa 439USD Bill Gates şi Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punacircndu-se astfel bazele companiei Microsoft
1981 - IBM lansează primul PC (Personal Computer) Costa 1365USD Urmează calculatoarele
286 (1982) 386 (1985) 486 (1989) Pentium (1993) Pentium Pro (1995) Pentium II (1997)
Pentium III (1999) Pentium IV (2000)
Icircncepacircnd din 1981 au loc o serie de dezvoltări extraordinare
Se pun bazele Internet-ului - sistem global de comunicare la distanţă prin intermediul
calculatoarelor
Apar o serie de noi componente ale calculatorului componente specializate pentru inter-
conectare (modemuri) scannerul mouse-ul (ca urmare a apariţiei primelor programe cu
interfaţă grafică) etc
Apar noi companii specializate icircn producţia de programe sau componente de calculator
Se formează mari concernuri Microsoft (cel mai mare producător de programe de
calculator fondată icircn 1975 de Paul Allen şi Bill Gates) AOL (America Online) cel mai
mare furnizor de servicii Internet etc
Născut in 1955 Scott McNealy icircnfiinţează icircn februarie 1982 firma SUN Numele acesteia
este un acronim pentru Reţeaua Universităţii Stanford (Stanford University Network- SUN)
Primul loc de muncă al lui Scott McNealy după terminarea studiilor a fost icircntr-unul din
magazinele Uniunii Muncitorilor Auto (UAW) Interesul pentru tehnologie l-a cuprins icircn
urma angajării la firma de computere Onyx Systems unde a primit şi cinci mii de acţiuni
Zece luni mai tacircrziu a icircnfiinţat SUN MicroSystems icircmpreună cu trei colegi Icircn doar 20 de
ani Scott McNealy a făcut din SUN principalul furnizor de soluţii software pentru reţele
Multe din aplicaţiile Netscape au fost dezvoltate iniţial la Universitatea din Illinois folosind
tehnologiile Sun Compania pe care o conduce a icircnregistrat icircn anul 2002 icircncasari de peste
117 miliarde de dolari şi are reprezentanţe icircn peste o sută de ţări Faţă de acum zece ani
cacircnd o acţiune SUN valora un dolar astăzi preţul acesteia este de cel puţin zece ori mai
mare A icircnfiinţat compania cu 285000 de dolari devenind profitabilă icircn primul an Astăzi
McNealy conduce un imperiu de 18 miliarde de dolari a adunat o avere considerabilă şi a
devenit unul dintre cei mai buni critici ai ldquorivaluluirdquo Microsoft Fiind numit de o
prestigioasă publicaţie drept unul dintre cei mai influenţi oameni de afaceri din America
ideile lui McNealy din domeniul ICT (Information and Communication Technologies) au
fost preluate şi transformate adeseori icircn noi curente icircn această industrie
(httpwwwsuncomaboutsuncoinfo historyhtml)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
7
Cloud Computing
Sursa httpthehealthcareblogcomblogtagcloud-computing
Sursa httpinboundnowitworkscomPortals174836imagesScreen20shot202012-12-
2720at204182920PMpng
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
2
Datele icircn sine nu au bdquosemnificaţierdquo Atunci cacircnd datele sunt interpretate de către un anumit
sistem de prelucrare ele devin informaţie
Algoritmul este un sistem de reguli care transformă informaţia iniţială icircn una finală trecacircnd
printr-un şir de informaţii intermediare
Algoritmul se caracterizează prin
1 Generalitate ndash rezolvă toate problemele din clasa respectivă de probleme
2 Finitudine ndash numărul de transformări intermediare aplicate informaţiei iniţiale icircn
scopul de a obţine informaţia finală este finit
3 Realizabilitate (efectivitate) - există posibilitatea efectuării operaţiilor prevăzute icircn
instrucţiunile algoritmului
4 Claritate ndash se caracterizează printr-o descriere precisă cu specificarea riguroasă şi
fără ambiguităţi a acţiunilor care urmează să se execute
5 Automatism - algoritmul poate fi aplicat fără ca instrucţiunile sale să ceară un efort
de gacircndire deosebit utilizatorul poate executa icircn mod mecanic operaţiile simple
indicate
Calculatorul reprezintă un ansamblu complex de echipamente electronice care pe baza unor
date de intrare şi a unor programe furnizate şi elaborate de om generează la ieşire informaţii El
este icircn acelaşi timp un mijloc de prelucrare automată a informaţiilor prelucracircndu-le sub o
formă cuantificată şi rezolvacircnd problemele icircn conformitate cu anumiţi algoritmi
Componentele fizice care alcătuiesc un calculator reprezintă hardware-ul Programele care icirci
precizează calculatorului ldquoce să facărdquo alcătuiesc software-ulhellip+peopleware
Observatie Peopleware este un termen utilizat pentru a desemna un al treilea aspect de bază al
tehnologiei informatice celelalte două aspecte fiind hardware şi software Peopleware [Con 01]
se referă la acele aspecte care au legatură cu rolul oamenilor icircn dezvoltarea sau utilizarea de
software de calculator şi sisteme hardware inclusiv aspecte cum ar fi productivitatea
dezvoltatorilor munca icircn echipă dinamica de grup psihologia de management de proiect de
programare factori organizaţionali elementele de design pentru interfaţa umană interacţiunea
om-maşină etc
Calculatorul este o maşină programabilă definită de două caracteristici esenţiale
pentru un anumit set de instrucţiuni răspunde icircntr-o manieră foarte bine definită Prin
instrucţiune se icircnţelege o comandă elementară (de bază) a unui calculator Setul de
instrucţiuni al unui calculator formează lista tuturor comenzilor elementare din limbajul
maşină al calculatorului
poate executa o listă de instrucţiuni preicircnregistrate (un program) Fără programe
calculatoarele sunt nefolositoare
SISTEME DE CALCUL (COMPUTER SYSTEMS)
Coponenta HARDWARE
Componenta SOFTWARE
Componenta Web - Retele si sistemul Internet
Componenta de securitate informatica
Componenta de Aplicatii-programe sepecializate sisteme informatice
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
3
Informatica reprezintă disciplina care oferă metode de rezolvare a problemelor cu
ajutorul calculatorului Academia Franceza (1966) a definit informatica ca fiind ldquoştiinţa
prelucrării raţionale icircndeosebi prin maşini automate a informaţiei considerată ca
suport al cunoştinţelor umane şi al comunicărilor icircn domeniile tehnice economice şi
socialerdquo fr Information fr Automatique Informatique )
Informatica restabileşte nu numai unitatea matematicilor pure şi a celor aplicate a
tehnicii concrete şi a matematicilor abstracte dar şi cea a ştiinţelor naturii ale omului şi
ale societăţii Reabilitează conceptele de abstract şi de formal şi icircmpacă arta cu ştiinţa nu
numai icircn sufletul omului de ştiinţă unde erau icircntotdeauna icircmpăcate ci şi icircn filosofarea
lor Grigore C Moisil (1906-1973)
Icircn urma prelucrării icircn concordanţă cu cerinţele informaţionale datele devin informaţii
Prelucrarea implică
1 Culegerea datelor
2 Prelucrarea propriu-zisă
3 Distribuirea rezultatelor prelucrării
Prelucrarea datelor se poate face
1 Manual
2 Automat
Prelucrarea automată a datelor presupune
a Resurse materiale (echipamente electronice de calcul ndash calculatoare etc)
b Resurse umane (operatori programatori etc)
Noţiuni fundamentale
________________________________________________________________
4
Resursele materiale şi umane coexistă şi formează un ansamblu numit Sistem de Prelucrare
Automată a Datelor (SPAD)
Prelucrarea automată a datelor presupune existenţa unui proces de reglare icircntre Introducerea
datelor Prelucrarea datelor Extragerea informaţiei
Etapele prelucrării automate a datelor Introducerea datelor Prelucrarea datelor Extragerea informaţiei
Culegere
Verificare
Codificare
Transmitere
Clasificare
Sortare
Calcule
Arhivare
Memorare
Regăsire
Decodificare
Difuzare
Sistemul informaţional reprezintă un ansamblu de fluxuri şi circuite informaţionale
organizate icircntr-o concepţie unitară care asigură legătura dintre sistemul decizional (de
conducere) şi sistemul operaţional (de execuţie)
Sistemul informatic este un ansamblu structurat de elemente intercorelate funcţional pentru
culegerea prelucrarea transmiterea şi stocarea informaţiilor cu ajutorul mijloacelor automate
de prelucrare a datelor Scopul acestuia este de a automatiza procesul informaţional şi de a
fundamenta deciziile Sistemul informatic este inclus icircn cel informaţional şi icirci dă acestuia noi
valenţe sub aspect calitativ şi cantitativ Acest lucru se realizează prin implementarea de către
sistemul informatic a unor modele matematice şi prin utilizarea tehnicii electronice de calcul
Sistemul informatic include
1 Cadrul organizatoric şi datele vehiculate
2 Resursele umane
3 Metodele şi tehnicile de proiectare
4 Echipamentele electronice de calcul
5 Sistemul de programe
12 Evoluţia calculatorului
1642 - Blaise Pascal (matematician fizician dar şi teolog) creează prima maşină de calculat
icircn scopul de a-l ajuta pe tatăl său la calculul taxelor Această maşină putea numai să adune I-
au fost necesari 2 ani pentru realizarea acestei maşini dar odată creată a reuşit să o producă icircn
50 de copii care s-au vacircndut imediat
1822 - Charles Babbage inventator englez proiectează primul motor diferenţial matematic
icircn scopul uşurării realizării tabelelor matematice ce erau folosite icircn industrie navigaţie şi
domeniul bancar Babbage nu a putut să realizeze niciodată acest proiect datorită lipsei de
tehnologii care să-i producă piesele componente la precizia dorită Icircn cinstea sa la Londonrsquos
Science Museum există un exemplar al acestui motor diferenţial realizat icircn 1990 după proiectul
amănunţit pe care inventatorul l-a lăsat
1884 - Herman Hollerith inventator american realizează prima maşină automată de calculat
pe bază de cartele perforate
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
5
1926 - Dr Julius Lilienfield creează conceptul primului tranzistor folosit pentru amplificare
(vacuum tubes)
1936 - Alan Turing foloseşte noţiunea de ldquomaşină Turing universală pentru a descrie un
calculator universal care poate executa orice program Programele erau stocate icircn memoria
calculatorului reprezentate ca şiruri de numere
1939 ndash Este proiectat primul calculator digital John Atanasoff lector la IOWA State
University icircmpreună cu doctorandul Clifford Berry au pus bazele primului computer digital
Pentru prima oară s-a pus problema reprezentării numerelor folosind condensatori pentru a
stoca sarcini electrice
1944 - Este realizat primul calculator de scară mare Mark I conceput de Howard Aiken
profesor la Harvard University Computerul Mark I a fost cel mai mare calculator realizat pacircnă
atunci Compus din peste 750 000 piese şi cacircntărind peste 5 tone el putea să adune să scadă să
icircnmulţească sau să icircmpartă două numere (pacircnă la 23 digiţi) icircn numai cacircteva secunde
1945 - John von Neumann analizează starea de fapt a calculatoarelor şi scrie un raport intitulat
``First Draft of a Report on the EDVAC (Prima ciornă a unui raport despre EDVAC) icircn care
sugerează o arhitectură revoluţionară programul nu mai este reprezentat de felul icircn care sunt
cuplate unităţile funcţionale ci este stocat icircn memorie fiind descris folosind un limbaj numit
cod-maşină Icircn cod-maşină operaţiile de executat sunt codificate sub forma unor numere
numite instrucţiuni Programul de executat este descris printr-un şir de instrucţiuni care se
execută consecutiv Caracteristica principala a masinii von Neuman este ca functionarea ei este
un proces secvential la un moment dat se executa o singura instructiune iar executarea unei
instructiuni poate sa inceapa numai dupa ce s-a incheiat executarea celei precedente In toate
operatiile participa unitatea centrala si registrii acesteia
1946 ndash Este realizat la University of Pennsylvania calculatorul ENIAC (the Electronic
Numerical Integrator and Computer) cel mai puternic pacircnă la acea dată Cacircntărea cca 30 tone
1946 ndash Este realizat calculatorul EDVAC (the Electronic Discrete Variable Computer) mai
puternic Arhitectura acestui calculator şi modul de stocare a programelor sunt asemănătoare
cu cele ale calculatoarelor de astăzi
1954 - Apare primul limbaj de programare - limbajul FORTRAN inventat de John Backus
angajat al IBM
1958 - Jack Kilbz (angajat laTexas Instruments) inventează primul circuit integrat
1964 - Tom Kurtz şi John Kemeny (profesori la Dartmouth University) creează limbajul de
programare BASIC (Beginners All Purpose Szmbolic Instruction Language) marcacircnd
icircnceputul programării intuitive
1970 - Compania Busicom foloseşte icircn producţie de serie circuitele integrate la construcţia
calculatoarelor
Noţiuni fundamentale
________________________________________________________________
6
1974 - Marcian Hoff proiectează primul microprocessor circuitul 4004 ce opera pe 4 biţi şi
conţinea peste 2000 de tranzistoare Proiectul lui Hoff a fost respins de companiile
producătoare de atunci
1974 - Intel realizează primul microprocesor 8080 ce opera pe 8 biţi O serie de alte companii
ca Motorola şi Zilog au icircnceput să realizeze o serie de cipuri similare
1975 - Se vinde primul computer Altair Acesta era un calculator cu procesor 8080 şi putea fi
asamblat de oricine Costa 439USD Bill Gates şi Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punacircndu-se astfel bazele companiei Microsoft
1981 - IBM lansează primul PC (Personal Computer) Costa 1365USD Urmează calculatoarele
286 (1982) 386 (1985) 486 (1989) Pentium (1993) Pentium Pro (1995) Pentium II (1997)
Pentium III (1999) Pentium IV (2000)
Icircncepacircnd din 1981 au loc o serie de dezvoltări extraordinare
Se pun bazele Internet-ului - sistem global de comunicare la distanţă prin intermediul
calculatoarelor
Apar o serie de noi componente ale calculatorului componente specializate pentru inter-
conectare (modemuri) scannerul mouse-ul (ca urmare a apariţiei primelor programe cu
interfaţă grafică) etc
Apar noi companii specializate icircn producţia de programe sau componente de calculator
Se formează mari concernuri Microsoft (cel mai mare producător de programe de
calculator fondată icircn 1975 de Paul Allen şi Bill Gates) AOL (America Online) cel mai
mare furnizor de servicii Internet etc
Născut in 1955 Scott McNealy icircnfiinţează icircn februarie 1982 firma SUN Numele acesteia
este un acronim pentru Reţeaua Universităţii Stanford (Stanford University Network- SUN)
Primul loc de muncă al lui Scott McNealy după terminarea studiilor a fost icircntr-unul din
magazinele Uniunii Muncitorilor Auto (UAW) Interesul pentru tehnologie l-a cuprins icircn
urma angajării la firma de computere Onyx Systems unde a primit şi cinci mii de acţiuni
Zece luni mai tacircrziu a icircnfiinţat SUN MicroSystems icircmpreună cu trei colegi Icircn doar 20 de
ani Scott McNealy a făcut din SUN principalul furnizor de soluţii software pentru reţele
Multe din aplicaţiile Netscape au fost dezvoltate iniţial la Universitatea din Illinois folosind
tehnologiile Sun Compania pe care o conduce a icircnregistrat icircn anul 2002 icircncasari de peste
117 miliarde de dolari şi are reprezentanţe icircn peste o sută de ţări Faţă de acum zece ani
cacircnd o acţiune SUN valora un dolar astăzi preţul acesteia este de cel puţin zece ori mai
mare A icircnfiinţat compania cu 285000 de dolari devenind profitabilă icircn primul an Astăzi
McNealy conduce un imperiu de 18 miliarde de dolari a adunat o avere considerabilă şi a
devenit unul dintre cei mai buni critici ai ldquorivaluluirdquo Microsoft Fiind numit de o
prestigioasă publicaţie drept unul dintre cei mai influenţi oameni de afaceri din America
ideile lui McNealy din domeniul ICT (Information and Communication Technologies) au
fost preluate şi transformate adeseori icircn noi curente icircn această industrie
(httpwwwsuncomaboutsuncoinfo historyhtml)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
7
Cloud Computing
Sursa httpthehealthcareblogcomblogtagcloud-computing
Sursa httpinboundnowitworkscomPortals174836imagesScreen20shot202012-12-
2720at204182920PMpng
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
3
Informatica reprezintă disciplina care oferă metode de rezolvare a problemelor cu
ajutorul calculatorului Academia Franceza (1966) a definit informatica ca fiind ldquoştiinţa
prelucrării raţionale icircndeosebi prin maşini automate a informaţiei considerată ca
suport al cunoştinţelor umane şi al comunicărilor icircn domeniile tehnice economice şi
socialerdquo fr Information fr Automatique Informatique )
Informatica restabileşte nu numai unitatea matematicilor pure şi a celor aplicate a
tehnicii concrete şi a matematicilor abstracte dar şi cea a ştiinţelor naturii ale omului şi
ale societăţii Reabilitează conceptele de abstract şi de formal şi icircmpacă arta cu ştiinţa nu
numai icircn sufletul omului de ştiinţă unde erau icircntotdeauna icircmpăcate ci şi icircn filosofarea
lor Grigore C Moisil (1906-1973)
Icircn urma prelucrării icircn concordanţă cu cerinţele informaţionale datele devin informaţii
Prelucrarea implică
1 Culegerea datelor
2 Prelucrarea propriu-zisă
3 Distribuirea rezultatelor prelucrării
Prelucrarea datelor se poate face
1 Manual
2 Automat
Prelucrarea automată a datelor presupune
a Resurse materiale (echipamente electronice de calcul ndash calculatoare etc)
b Resurse umane (operatori programatori etc)
Noţiuni fundamentale
________________________________________________________________
4
Resursele materiale şi umane coexistă şi formează un ansamblu numit Sistem de Prelucrare
Automată a Datelor (SPAD)
Prelucrarea automată a datelor presupune existenţa unui proces de reglare icircntre Introducerea
datelor Prelucrarea datelor Extragerea informaţiei
Etapele prelucrării automate a datelor Introducerea datelor Prelucrarea datelor Extragerea informaţiei
Culegere
Verificare
Codificare
Transmitere
Clasificare
Sortare
Calcule
Arhivare
Memorare
Regăsire
Decodificare
Difuzare
Sistemul informaţional reprezintă un ansamblu de fluxuri şi circuite informaţionale
organizate icircntr-o concepţie unitară care asigură legătura dintre sistemul decizional (de
conducere) şi sistemul operaţional (de execuţie)
Sistemul informatic este un ansamblu structurat de elemente intercorelate funcţional pentru
culegerea prelucrarea transmiterea şi stocarea informaţiilor cu ajutorul mijloacelor automate
de prelucrare a datelor Scopul acestuia este de a automatiza procesul informaţional şi de a
fundamenta deciziile Sistemul informatic este inclus icircn cel informaţional şi icirci dă acestuia noi
valenţe sub aspect calitativ şi cantitativ Acest lucru se realizează prin implementarea de către
sistemul informatic a unor modele matematice şi prin utilizarea tehnicii electronice de calcul
Sistemul informatic include
1 Cadrul organizatoric şi datele vehiculate
2 Resursele umane
3 Metodele şi tehnicile de proiectare
4 Echipamentele electronice de calcul
5 Sistemul de programe
12 Evoluţia calculatorului
1642 - Blaise Pascal (matematician fizician dar şi teolog) creează prima maşină de calculat
icircn scopul de a-l ajuta pe tatăl său la calculul taxelor Această maşină putea numai să adune I-
au fost necesari 2 ani pentru realizarea acestei maşini dar odată creată a reuşit să o producă icircn
50 de copii care s-au vacircndut imediat
1822 - Charles Babbage inventator englez proiectează primul motor diferenţial matematic
icircn scopul uşurării realizării tabelelor matematice ce erau folosite icircn industrie navigaţie şi
domeniul bancar Babbage nu a putut să realizeze niciodată acest proiect datorită lipsei de
tehnologii care să-i producă piesele componente la precizia dorită Icircn cinstea sa la Londonrsquos
Science Museum există un exemplar al acestui motor diferenţial realizat icircn 1990 după proiectul
amănunţit pe care inventatorul l-a lăsat
1884 - Herman Hollerith inventator american realizează prima maşină automată de calculat
pe bază de cartele perforate
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
5
1926 - Dr Julius Lilienfield creează conceptul primului tranzistor folosit pentru amplificare
(vacuum tubes)
1936 - Alan Turing foloseşte noţiunea de ldquomaşină Turing universală pentru a descrie un
calculator universal care poate executa orice program Programele erau stocate icircn memoria
calculatorului reprezentate ca şiruri de numere
1939 ndash Este proiectat primul calculator digital John Atanasoff lector la IOWA State
University icircmpreună cu doctorandul Clifford Berry au pus bazele primului computer digital
Pentru prima oară s-a pus problema reprezentării numerelor folosind condensatori pentru a
stoca sarcini electrice
1944 - Este realizat primul calculator de scară mare Mark I conceput de Howard Aiken
profesor la Harvard University Computerul Mark I a fost cel mai mare calculator realizat pacircnă
atunci Compus din peste 750 000 piese şi cacircntărind peste 5 tone el putea să adune să scadă să
icircnmulţească sau să icircmpartă două numere (pacircnă la 23 digiţi) icircn numai cacircteva secunde
1945 - John von Neumann analizează starea de fapt a calculatoarelor şi scrie un raport intitulat
``First Draft of a Report on the EDVAC (Prima ciornă a unui raport despre EDVAC) icircn care
sugerează o arhitectură revoluţionară programul nu mai este reprezentat de felul icircn care sunt
cuplate unităţile funcţionale ci este stocat icircn memorie fiind descris folosind un limbaj numit
cod-maşină Icircn cod-maşină operaţiile de executat sunt codificate sub forma unor numere
numite instrucţiuni Programul de executat este descris printr-un şir de instrucţiuni care se
execută consecutiv Caracteristica principala a masinii von Neuman este ca functionarea ei este
un proces secvential la un moment dat se executa o singura instructiune iar executarea unei
instructiuni poate sa inceapa numai dupa ce s-a incheiat executarea celei precedente In toate
operatiile participa unitatea centrala si registrii acesteia
1946 ndash Este realizat la University of Pennsylvania calculatorul ENIAC (the Electronic
Numerical Integrator and Computer) cel mai puternic pacircnă la acea dată Cacircntărea cca 30 tone
1946 ndash Este realizat calculatorul EDVAC (the Electronic Discrete Variable Computer) mai
puternic Arhitectura acestui calculator şi modul de stocare a programelor sunt asemănătoare
cu cele ale calculatoarelor de astăzi
1954 - Apare primul limbaj de programare - limbajul FORTRAN inventat de John Backus
angajat al IBM
1958 - Jack Kilbz (angajat laTexas Instruments) inventează primul circuit integrat
1964 - Tom Kurtz şi John Kemeny (profesori la Dartmouth University) creează limbajul de
programare BASIC (Beginners All Purpose Szmbolic Instruction Language) marcacircnd
icircnceputul programării intuitive
1970 - Compania Busicom foloseşte icircn producţie de serie circuitele integrate la construcţia
calculatoarelor
Noţiuni fundamentale
________________________________________________________________
6
1974 - Marcian Hoff proiectează primul microprocessor circuitul 4004 ce opera pe 4 biţi şi
conţinea peste 2000 de tranzistoare Proiectul lui Hoff a fost respins de companiile
producătoare de atunci
1974 - Intel realizează primul microprocesor 8080 ce opera pe 8 biţi O serie de alte companii
ca Motorola şi Zilog au icircnceput să realizeze o serie de cipuri similare
1975 - Se vinde primul computer Altair Acesta era un calculator cu procesor 8080 şi putea fi
asamblat de oricine Costa 439USD Bill Gates şi Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punacircndu-se astfel bazele companiei Microsoft
1981 - IBM lansează primul PC (Personal Computer) Costa 1365USD Urmează calculatoarele
286 (1982) 386 (1985) 486 (1989) Pentium (1993) Pentium Pro (1995) Pentium II (1997)
Pentium III (1999) Pentium IV (2000)
Icircncepacircnd din 1981 au loc o serie de dezvoltări extraordinare
Se pun bazele Internet-ului - sistem global de comunicare la distanţă prin intermediul
calculatoarelor
Apar o serie de noi componente ale calculatorului componente specializate pentru inter-
conectare (modemuri) scannerul mouse-ul (ca urmare a apariţiei primelor programe cu
interfaţă grafică) etc
Apar noi companii specializate icircn producţia de programe sau componente de calculator
Se formează mari concernuri Microsoft (cel mai mare producător de programe de
calculator fondată icircn 1975 de Paul Allen şi Bill Gates) AOL (America Online) cel mai
mare furnizor de servicii Internet etc
Născut in 1955 Scott McNealy icircnfiinţează icircn februarie 1982 firma SUN Numele acesteia
este un acronim pentru Reţeaua Universităţii Stanford (Stanford University Network- SUN)
Primul loc de muncă al lui Scott McNealy după terminarea studiilor a fost icircntr-unul din
magazinele Uniunii Muncitorilor Auto (UAW) Interesul pentru tehnologie l-a cuprins icircn
urma angajării la firma de computere Onyx Systems unde a primit şi cinci mii de acţiuni
Zece luni mai tacircrziu a icircnfiinţat SUN MicroSystems icircmpreună cu trei colegi Icircn doar 20 de
ani Scott McNealy a făcut din SUN principalul furnizor de soluţii software pentru reţele
Multe din aplicaţiile Netscape au fost dezvoltate iniţial la Universitatea din Illinois folosind
tehnologiile Sun Compania pe care o conduce a icircnregistrat icircn anul 2002 icircncasari de peste
117 miliarde de dolari şi are reprezentanţe icircn peste o sută de ţări Faţă de acum zece ani
cacircnd o acţiune SUN valora un dolar astăzi preţul acesteia este de cel puţin zece ori mai
mare A icircnfiinţat compania cu 285000 de dolari devenind profitabilă icircn primul an Astăzi
McNealy conduce un imperiu de 18 miliarde de dolari a adunat o avere considerabilă şi a
devenit unul dintre cei mai buni critici ai ldquorivaluluirdquo Microsoft Fiind numit de o
prestigioasă publicaţie drept unul dintre cei mai influenţi oameni de afaceri din America
ideile lui McNealy din domeniul ICT (Information and Communication Technologies) au
fost preluate şi transformate adeseori icircn noi curente icircn această industrie
(httpwwwsuncomaboutsuncoinfo historyhtml)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
7
Cloud Computing
Sursa httpthehealthcareblogcomblogtagcloud-computing
Sursa httpinboundnowitworkscomPortals174836imagesScreen20shot202012-12-
2720at204182920PMpng
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
4
Resursele materiale şi umane coexistă şi formează un ansamblu numit Sistem de Prelucrare
Automată a Datelor (SPAD)
Prelucrarea automată a datelor presupune existenţa unui proces de reglare icircntre Introducerea
datelor Prelucrarea datelor Extragerea informaţiei
Etapele prelucrării automate a datelor Introducerea datelor Prelucrarea datelor Extragerea informaţiei
Culegere
Verificare
Codificare
Transmitere
Clasificare
Sortare
Calcule
Arhivare
Memorare
Regăsire
Decodificare
Difuzare
Sistemul informaţional reprezintă un ansamblu de fluxuri şi circuite informaţionale
organizate icircntr-o concepţie unitară care asigură legătura dintre sistemul decizional (de
conducere) şi sistemul operaţional (de execuţie)
Sistemul informatic este un ansamblu structurat de elemente intercorelate funcţional pentru
culegerea prelucrarea transmiterea şi stocarea informaţiilor cu ajutorul mijloacelor automate
de prelucrare a datelor Scopul acestuia este de a automatiza procesul informaţional şi de a
fundamenta deciziile Sistemul informatic este inclus icircn cel informaţional şi icirci dă acestuia noi
valenţe sub aspect calitativ şi cantitativ Acest lucru se realizează prin implementarea de către
sistemul informatic a unor modele matematice şi prin utilizarea tehnicii electronice de calcul
Sistemul informatic include
1 Cadrul organizatoric şi datele vehiculate
2 Resursele umane
3 Metodele şi tehnicile de proiectare
4 Echipamentele electronice de calcul
5 Sistemul de programe
12 Evoluţia calculatorului
1642 - Blaise Pascal (matematician fizician dar şi teolog) creează prima maşină de calculat
icircn scopul de a-l ajuta pe tatăl său la calculul taxelor Această maşină putea numai să adune I-
au fost necesari 2 ani pentru realizarea acestei maşini dar odată creată a reuşit să o producă icircn
50 de copii care s-au vacircndut imediat
1822 - Charles Babbage inventator englez proiectează primul motor diferenţial matematic
icircn scopul uşurării realizării tabelelor matematice ce erau folosite icircn industrie navigaţie şi
domeniul bancar Babbage nu a putut să realizeze niciodată acest proiect datorită lipsei de
tehnologii care să-i producă piesele componente la precizia dorită Icircn cinstea sa la Londonrsquos
Science Museum există un exemplar al acestui motor diferenţial realizat icircn 1990 după proiectul
amănunţit pe care inventatorul l-a lăsat
1884 - Herman Hollerith inventator american realizează prima maşină automată de calculat
pe bază de cartele perforate
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
5
1926 - Dr Julius Lilienfield creează conceptul primului tranzistor folosit pentru amplificare
(vacuum tubes)
1936 - Alan Turing foloseşte noţiunea de ldquomaşină Turing universală pentru a descrie un
calculator universal care poate executa orice program Programele erau stocate icircn memoria
calculatorului reprezentate ca şiruri de numere
1939 ndash Este proiectat primul calculator digital John Atanasoff lector la IOWA State
University icircmpreună cu doctorandul Clifford Berry au pus bazele primului computer digital
Pentru prima oară s-a pus problema reprezentării numerelor folosind condensatori pentru a
stoca sarcini electrice
1944 - Este realizat primul calculator de scară mare Mark I conceput de Howard Aiken
profesor la Harvard University Computerul Mark I a fost cel mai mare calculator realizat pacircnă
atunci Compus din peste 750 000 piese şi cacircntărind peste 5 tone el putea să adune să scadă să
icircnmulţească sau să icircmpartă două numere (pacircnă la 23 digiţi) icircn numai cacircteva secunde
1945 - John von Neumann analizează starea de fapt a calculatoarelor şi scrie un raport intitulat
``First Draft of a Report on the EDVAC (Prima ciornă a unui raport despre EDVAC) icircn care
sugerează o arhitectură revoluţionară programul nu mai este reprezentat de felul icircn care sunt
cuplate unităţile funcţionale ci este stocat icircn memorie fiind descris folosind un limbaj numit
cod-maşină Icircn cod-maşină operaţiile de executat sunt codificate sub forma unor numere
numite instrucţiuni Programul de executat este descris printr-un şir de instrucţiuni care se
execută consecutiv Caracteristica principala a masinii von Neuman este ca functionarea ei este
un proces secvential la un moment dat se executa o singura instructiune iar executarea unei
instructiuni poate sa inceapa numai dupa ce s-a incheiat executarea celei precedente In toate
operatiile participa unitatea centrala si registrii acesteia
1946 ndash Este realizat la University of Pennsylvania calculatorul ENIAC (the Electronic
Numerical Integrator and Computer) cel mai puternic pacircnă la acea dată Cacircntărea cca 30 tone
1946 ndash Este realizat calculatorul EDVAC (the Electronic Discrete Variable Computer) mai
puternic Arhitectura acestui calculator şi modul de stocare a programelor sunt asemănătoare
cu cele ale calculatoarelor de astăzi
1954 - Apare primul limbaj de programare - limbajul FORTRAN inventat de John Backus
angajat al IBM
1958 - Jack Kilbz (angajat laTexas Instruments) inventează primul circuit integrat
1964 - Tom Kurtz şi John Kemeny (profesori la Dartmouth University) creează limbajul de
programare BASIC (Beginners All Purpose Szmbolic Instruction Language) marcacircnd
icircnceputul programării intuitive
1970 - Compania Busicom foloseşte icircn producţie de serie circuitele integrate la construcţia
calculatoarelor
Noţiuni fundamentale
________________________________________________________________
6
1974 - Marcian Hoff proiectează primul microprocessor circuitul 4004 ce opera pe 4 biţi şi
conţinea peste 2000 de tranzistoare Proiectul lui Hoff a fost respins de companiile
producătoare de atunci
1974 - Intel realizează primul microprocesor 8080 ce opera pe 8 biţi O serie de alte companii
ca Motorola şi Zilog au icircnceput să realizeze o serie de cipuri similare
1975 - Se vinde primul computer Altair Acesta era un calculator cu procesor 8080 şi putea fi
asamblat de oricine Costa 439USD Bill Gates şi Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punacircndu-se astfel bazele companiei Microsoft
1981 - IBM lansează primul PC (Personal Computer) Costa 1365USD Urmează calculatoarele
286 (1982) 386 (1985) 486 (1989) Pentium (1993) Pentium Pro (1995) Pentium II (1997)
Pentium III (1999) Pentium IV (2000)
Icircncepacircnd din 1981 au loc o serie de dezvoltări extraordinare
Se pun bazele Internet-ului - sistem global de comunicare la distanţă prin intermediul
calculatoarelor
Apar o serie de noi componente ale calculatorului componente specializate pentru inter-
conectare (modemuri) scannerul mouse-ul (ca urmare a apariţiei primelor programe cu
interfaţă grafică) etc
Apar noi companii specializate icircn producţia de programe sau componente de calculator
Se formează mari concernuri Microsoft (cel mai mare producător de programe de
calculator fondată icircn 1975 de Paul Allen şi Bill Gates) AOL (America Online) cel mai
mare furnizor de servicii Internet etc
Născut in 1955 Scott McNealy icircnfiinţează icircn februarie 1982 firma SUN Numele acesteia
este un acronim pentru Reţeaua Universităţii Stanford (Stanford University Network- SUN)
Primul loc de muncă al lui Scott McNealy după terminarea studiilor a fost icircntr-unul din
magazinele Uniunii Muncitorilor Auto (UAW) Interesul pentru tehnologie l-a cuprins icircn
urma angajării la firma de computere Onyx Systems unde a primit şi cinci mii de acţiuni
Zece luni mai tacircrziu a icircnfiinţat SUN MicroSystems icircmpreună cu trei colegi Icircn doar 20 de
ani Scott McNealy a făcut din SUN principalul furnizor de soluţii software pentru reţele
Multe din aplicaţiile Netscape au fost dezvoltate iniţial la Universitatea din Illinois folosind
tehnologiile Sun Compania pe care o conduce a icircnregistrat icircn anul 2002 icircncasari de peste
117 miliarde de dolari şi are reprezentanţe icircn peste o sută de ţări Faţă de acum zece ani
cacircnd o acţiune SUN valora un dolar astăzi preţul acesteia este de cel puţin zece ori mai
mare A icircnfiinţat compania cu 285000 de dolari devenind profitabilă icircn primul an Astăzi
McNealy conduce un imperiu de 18 miliarde de dolari a adunat o avere considerabilă şi a
devenit unul dintre cei mai buni critici ai ldquorivaluluirdquo Microsoft Fiind numit de o
prestigioasă publicaţie drept unul dintre cei mai influenţi oameni de afaceri din America
ideile lui McNealy din domeniul ICT (Information and Communication Technologies) au
fost preluate şi transformate adeseori icircn noi curente icircn această industrie
(httpwwwsuncomaboutsuncoinfo historyhtml)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
7
Cloud Computing
Sursa httpthehealthcareblogcomblogtagcloud-computing
Sursa httpinboundnowitworkscomPortals174836imagesScreen20shot202012-12-
2720at204182920PMpng
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
5
1926 - Dr Julius Lilienfield creează conceptul primului tranzistor folosit pentru amplificare
(vacuum tubes)
1936 - Alan Turing foloseşte noţiunea de ldquomaşină Turing universală pentru a descrie un
calculator universal care poate executa orice program Programele erau stocate icircn memoria
calculatorului reprezentate ca şiruri de numere
1939 ndash Este proiectat primul calculator digital John Atanasoff lector la IOWA State
University icircmpreună cu doctorandul Clifford Berry au pus bazele primului computer digital
Pentru prima oară s-a pus problema reprezentării numerelor folosind condensatori pentru a
stoca sarcini electrice
1944 - Este realizat primul calculator de scară mare Mark I conceput de Howard Aiken
profesor la Harvard University Computerul Mark I a fost cel mai mare calculator realizat pacircnă
atunci Compus din peste 750 000 piese şi cacircntărind peste 5 tone el putea să adune să scadă să
icircnmulţească sau să icircmpartă două numere (pacircnă la 23 digiţi) icircn numai cacircteva secunde
1945 - John von Neumann analizează starea de fapt a calculatoarelor şi scrie un raport intitulat
``First Draft of a Report on the EDVAC (Prima ciornă a unui raport despre EDVAC) icircn care
sugerează o arhitectură revoluţionară programul nu mai este reprezentat de felul icircn care sunt
cuplate unităţile funcţionale ci este stocat icircn memorie fiind descris folosind un limbaj numit
cod-maşină Icircn cod-maşină operaţiile de executat sunt codificate sub forma unor numere
numite instrucţiuni Programul de executat este descris printr-un şir de instrucţiuni care se
execută consecutiv Caracteristica principala a masinii von Neuman este ca functionarea ei este
un proces secvential la un moment dat se executa o singura instructiune iar executarea unei
instructiuni poate sa inceapa numai dupa ce s-a incheiat executarea celei precedente In toate
operatiile participa unitatea centrala si registrii acesteia
1946 ndash Este realizat la University of Pennsylvania calculatorul ENIAC (the Electronic
Numerical Integrator and Computer) cel mai puternic pacircnă la acea dată Cacircntărea cca 30 tone
1946 ndash Este realizat calculatorul EDVAC (the Electronic Discrete Variable Computer) mai
puternic Arhitectura acestui calculator şi modul de stocare a programelor sunt asemănătoare
cu cele ale calculatoarelor de astăzi
1954 - Apare primul limbaj de programare - limbajul FORTRAN inventat de John Backus
angajat al IBM
1958 - Jack Kilbz (angajat laTexas Instruments) inventează primul circuit integrat
1964 - Tom Kurtz şi John Kemeny (profesori la Dartmouth University) creează limbajul de
programare BASIC (Beginners All Purpose Szmbolic Instruction Language) marcacircnd
icircnceputul programării intuitive
1970 - Compania Busicom foloseşte icircn producţie de serie circuitele integrate la construcţia
calculatoarelor
Noţiuni fundamentale
________________________________________________________________
6
1974 - Marcian Hoff proiectează primul microprocessor circuitul 4004 ce opera pe 4 biţi şi
conţinea peste 2000 de tranzistoare Proiectul lui Hoff a fost respins de companiile
producătoare de atunci
1974 - Intel realizează primul microprocesor 8080 ce opera pe 8 biţi O serie de alte companii
ca Motorola şi Zilog au icircnceput să realizeze o serie de cipuri similare
1975 - Se vinde primul computer Altair Acesta era un calculator cu procesor 8080 şi putea fi
asamblat de oricine Costa 439USD Bill Gates şi Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punacircndu-se astfel bazele companiei Microsoft
1981 - IBM lansează primul PC (Personal Computer) Costa 1365USD Urmează calculatoarele
286 (1982) 386 (1985) 486 (1989) Pentium (1993) Pentium Pro (1995) Pentium II (1997)
Pentium III (1999) Pentium IV (2000)
Icircncepacircnd din 1981 au loc o serie de dezvoltări extraordinare
Se pun bazele Internet-ului - sistem global de comunicare la distanţă prin intermediul
calculatoarelor
Apar o serie de noi componente ale calculatorului componente specializate pentru inter-
conectare (modemuri) scannerul mouse-ul (ca urmare a apariţiei primelor programe cu
interfaţă grafică) etc
Apar noi companii specializate icircn producţia de programe sau componente de calculator
Se formează mari concernuri Microsoft (cel mai mare producător de programe de
calculator fondată icircn 1975 de Paul Allen şi Bill Gates) AOL (America Online) cel mai
mare furnizor de servicii Internet etc
Născut in 1955 Scott McNealy icircnfiinţează icircn februarie 1982 firma SUN Numele acesteia
este un acronim pentru Reţeaua Universităţii Stanford (Stanford University Network- SUN)
Primul loc de muncă al lui Scott McNealy după terminarea studiilor a fost icircntr-unul din
magazinele Uniunii Muncitorilor Auto (UAW) Interesul pentru tehnologie l-a cuprins icircn
urma angajării la firma de computere Onyx Systems unde a primit şi cinci mii de acţiuni
Zece luni mai tacircrziu a icircnfiinţat SUN MicroSystems icircmpreună cu trei colegi Icircn doar 20 de
ani Scott McNealy a făcut din SUN principalul furnizor de soluţii software pentru reţele
Multe din aplicaţiile Netscape au fost dezvoltate iniţial la Universitatea din Illinois folosind
tehnologiile Sun Compania pe care o conduce a icircnregistrat icircn anul 2002 icircncasari de peste
117 miliarde de dolari şi are reprezentanţe icircn peste o sută de ţări Faţă de acum zece ani
cacircnd o acţiune SUN valora un dolar astăzi preţul acesteia este de cel puţin zece ori mai
mare A icircnfiinţat compania cu 285000 de dolari devenind profitabilă icircn primul an Astăzi
McNealy conduce un imperiu de 18 miliarde de dolari a adunat o avere considerabilă şi a
devenit unul dintre cei mai buni critici ai ldquorivaluluirdquo Microsoft Fiind numit de o
prestigioasă publicaţie drept unul dintre cei mai influenţi oameni de afaceri din America
ideile lui McNealy din domeniul ICT (Information and Communication Technologies) au
fost preluate şi transformate adeseori icircn noi curente icircn această industrie
(httpwwwsuncomaboutsuncoinfo historyhtml)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
7
Cloud Computing
Sursa httpthehealthcareblogcomblogtagcloud-computing
Sursa httpinboundnowitworkscomPortals174836imagesScreen20shot202012-12-
2720at204182920PMpng
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
6
1974 - Marcian Hoff proiectează primul microprocessor circuitul 4004 ce opera pe 4 biţi şi
conţinea peste 2000 de tranzistoare Proiectul lui Hoff a fost respins de companiile
producătoare de atunci
1974 - Intel realizează primul microprocesor 8080 ce opera pe 8 biţi O serie de alte companii
ca Motorola şi Zilog au icircnceput să realizeze o serie de cipuri similare
1975 - Se vinde primul computer Altair Acesta era un calculator cu procesor 8080 şi putea fi
asamblat de oricine Costa 439USD Bill Gates şi Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punacircndu-se astfel bazele companiei Microsoft
1981 - IBM lansează primul PC (Personal Computer) Costa 1365USD Urmează calculatoarele
286 (1982) 386 (1985) 486 (1989) Pentium (1993) Pentium Pro (1995) Pentium II (1997)
Pentium III (1999) Pentium IV (2000)
Icircncepacircnd din 1981 au loc o serie de dezvoltări extraordinare
Se pun bazele Internet-ului - sistem global de comunicare la distanţă prin intermediul
calculatoarelor
Apar o serie de noi componente ale calculatorului componente specializate pentru inter-
conectare (modemuri) scannerul mouse-ul (ca urmare a apariţiei primelor programe cu
interfaţă grafică) etc
Apar noi companii specializate icircn producţia de programe sau componente de calculator
Se formează mari concernuri Microsoft (cel mai mare producător de programe de
calculator fondată icircn 1975 de Paul Allen şi Bill Gates) AOL (America Online) cel mai
mare furnizor de servicii Internet etc
Născut in 1955 Scott McNealy icircnfiinţează icircn februarie 1982 firma SUN Numele acesteia
este un acronim pentru Reţeaua Universităţii Stanford (Stanford University Network- SUN)
Primul loc de muncă al lui Scott McNealy după terminarea studiilor a fost icircntr-unul din
magazinele Uniunii Muncitorilor Auto (UAW) Interesul pentru tehnologie l-a cuprins icircn
urma angajării la firma de computere Onyx Systems unde a primit şi cinci mii de acţiuni
Zece luni mai tacircrziu a icircnfiinţat SUN MicroSystems icircmpreună cu trei colegi Icircn doar 20 de
ani Scott McNealy a făcut din SUN principalul furnizor de soluţii software pentru reţele
Multe din aplicaţiile Netscape au fost dezvoltate iniţial la Universitatea din Illinois folosind
tehnologiile Sun Compania pe care o conduce a icircnregistrat icircn anul 2002 icircncasari de peste
117 miliarde de dolari şi are reprezentanţe icircn peste o sută de ţări Faţă de acum zece ani
cacircnd o acţiune SUN valora un dolar astăzi preţul acesteia este de cel puţin zece ori mai
mare A icircnfiinţat compania cu 285000 de dolari devenind profitabilă icircn primul an Astăzi
McNealy conduce un imperiu de 18 miliarde de dolari a adunat o avere considerabilă şi a
devenit unul dintre cei mai buni critici ai ldquorivaluluirdquo Microsoft Fiind numit de o
prestigioasă publicaţie drept unul dintre cei mai influenţi oameni de afaceri din America
ideile lui McNealy din domeniul ICT (Information and Communication Technologies) au
fost preluate şi transformate adeseori icircn noi curente icircn această industrie
(httpwwwsuncomaboutsuncoinfo historyhtml)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
7
Cloud Computing
Sursa httpthehealthcareblogcomblogtagcloud-computing
Sursa httpinboundnowitworkscomPortals174836imagesScreen20shot202012-12-
2720at204182920PMpng
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
7
Cloud Computing
Sursa httpthehealthcareblogcomblogtagcloud-computing
Sursa httpinboundnowitworkscomPortals174836imagesScreen20shot202012-12-
2720at204182920PMpng
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
8
Sursa httpthevarguycomsite-filesthevarguycomfilesarchivethevarguycomwp-contentuploads200910cloud-
componentsjpg
13 Structura funcţională a sistemelor de calcul 131 Clasificare Sistemele de calcul icircn general calculatoarele se icircmpart icircn
1 Sisteme de calcul numerice - folosesc semnale digitale reprezentate sub forma numerică
binară 0 şi 1
2 Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise icircntre variabilele
continue ale unui sistem fizic
3 Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic
Calculatoarele numerice pot fi la racircndul lor neprogramabile sau programabile
Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii icircn care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator de la tastatură Există icircnsă şi
numeroase alte dispozitive de calcul numeric neprogramabile majoritatea fiind
icircncorporate icircn diferite echipamente electrocasnice (telefoane televizoare maşini de
spălat maşini de gătit cu microunde etc) sau icircn echipamentele de automatizare
industriale şi din alte domenii
Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus icircn memoria calculatorului şi care poate fi modificat Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile Icircn realitate
calculatoarul neprogramabil funcţionează şi el pe baza unui program dar acesta este
impus de fabricant şi nu poate fi modificat
Icircn prezent cacircnd se foloseşte cuvacircntul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context se subicircnţelege că este vorba de un
calculator numeric programabil
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
9
Icircn funcţie de mărime posibilităţi de prelucrare preţ şi viteză de operare există patru categorii
de sisteme de calcul supercalculatoare sisteme principale (mainframe) minicalculatoare şi
microcalculatoare
132 Structura unui sistem de calcul
Dispozitive periferice de intrare (DPI) ndash permit introducerea datelor icircn vederea
prelucrării
Exemple tastatură mouse joystick creion optic scanner etc
Dispozitive periferice de iesire (DPE) ndash permit redarea rezultatelor prelucrării
Exemple monitor imprimantă plotter etc
Canale (magistrale) de intrareieşire (IE) - dirijează informaţii de la DPI la DPE
Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
icirci sunt furnizate de memorie Rezultatul operaţiilor se depune după execuţie tot icircn
memorie
Memoria internatilde ndash principalatilde (MEM) - păstrează datele şi instrucţiunile programelor
icircn locaţiile binare identificate prin adrese
Memoria externatilde (MEM EXT)- solicitată cacircnd prelucrările depăşesc capacitatea
memoriei interne sau icircn scopul arhivării datelor şi programelor
Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie le
interpretează şi corespunzător interpretărilor acestora emite comenzi către UAL MEM
comenzi de transfer catildetre DPI DPE sau MEM EXT prin intermediul canalelor de IE
Observaţii
UCC + UAL alcatildetuiesc UCP (unitatea centralatilde de prelucrare = procesorul central)
UCP + MEM = UC (unitatea centralatilde)
Figura 11 Structura unui sistem de calcul
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
10
133 Funcţionarea sistemului de calcul
Datele iniţiale şi programele se introduc prin DPI
Datele şi instrucţiunile programelor sunt transferate icircn MEM (prin intermediul canalelor
de IE) sub formă binară icircn locaţiile identificabile prin adresa lor
Fiecare instrucţiune este trimisatilde la UCC Aceasta le interpreteazatilde ordmi emite comenzi catildetre
MEM UAL ordmi canalele IE
Rezultatele memorate la diferite adrese sunt transferate catildetre DPE prin canalele de IE
Ele pot ajunge la dispozitivele de ieordmire (monitor) pentru vizualizare catildetre MEM EXT
pentru arhivare etc
Observaţie
ldquo Calculatoarele electronice nu sunt supraomeneşti Ele se strică Fac greşeli ndash periculoase
uneori Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul icircnconjurător
Cu aceste rezerve ele rămacircn icircnsă una din cele mai uimitoare şi tulburătoare realizări ale
omului pentru că ne amplifică capacitatea intelectualăhellipşi nu ştim unde ne vor duce pacircnă la
urmă propriile noastre minţi rdquo Toffler A Al treilea val EdPolitică Bucureşti 1983 p236
Sursa httpwwwmotherboardsorgimageviewhtmli=imagesreviewshardware1831_p3_1jpg
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
11
Sursa httpwwwbuzzlecomarticlesi3-i5-i7-comparisonhtml
httpwwwigalaxys3comwp-contentuploads201206s3-teardownjpg
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
12
httpandroidadvicescomapple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table
2BAZELE MATEMATICE ALE CALCULATOARELOR
21 Reprezentarea informaţiei
Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit O informaţie mai complexă (un
caracter un număr etc) se exprimă printrndasho mulţime de biţi
Codificarea unei informaţii (la nivelul sistemului de calcul) constă icircn a stabili o
corespondenţă icircntre reprezentarea externă a informaţiei (caracterul A sau numărul 33
de exemplu) şi reprezentarea sa internă care este o secvenţă de biţi Avantajele
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
13
reprezentării binare se referă icircn special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice utilizacircnd logica
simbolică cu două stări (0 1)
Informaţiile prelucrate icircn sistemele de calcul sunt de două tipuri instrucţiuni şi
date
Instrucţiunile scrise icircn limbaj maşină reprezintă operaţiile efectuate icircn sistemul de
calcul şi ele sunt compuse din mai multe cacircmpuri
codul operaţiei de efectuat
operanzii implicaţi icircn operaţie
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa
Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările) sau sunt
produse de către acestea O adunare de exemplu se aplică la doi operanzi furnizacircnd
un rezultat care este suma acestora
Se pot distinge date nenumerice de exemplu simbolurile care constituie un text şi
date numerice rezultat al unei operaţii aritmetice
Datele nenumerice corespund caracterelor alfanumerice A B Z a b z 0 1
2 9 şi caracterelor speciale ldquo $
Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod
utilizat Printre cele mai cunoscute coduri putem enumera
BCD - Binary Coded Decimal
ASCII - American Standard Code for Information Interchange (8 biţi) Rezulta
256 de caractere codificate cu numere intre 0 si 255
UNICODE ndash 16 biti 2 la a 16-a 65536 caractere cuprinse intre 0 si 65535
Tema wwwgooglecomgt search ascii table unicode table download helliple
retinem + trimitere prin e-mail la adresa constructii20132014gmailcom
gt fisier cu numele ASCII_UNICODE_Nume+prenume_grupa Termen
21 oct 2013 La subject ASCII_UNICODE_Nume+prenume_grupa
EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi)
Figura următoare prezintă corespondenţa dintre diferite coduri
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
14
Figura 21 Tabela de corespondenţă icircntre coduri
Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF SEL
05 5 05 005 00000101 even ENQ HT PT
06 6 06 006 00000110 even ACK LC RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE dagger
11 17 11 021 00010001 even DC1 DC1 SBA
12 18 12 022 00010010 even DC2 DC2 EUA
22 Datele numerice
Datele numerice sunt de următoarele tipuri
a) numere icircntregi pozitive sau nule 0 1 315
b) numere intregi negative -1 -155
c) numere fracţionare 31415 -05
d) numere icircn notaţie ştiinţifică 49 E10=491010
107E-4=10710 - 4
1023E2 (
startgtaccessoriesgtcalculator excel ---click dr pe celula type)
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător Operaţiile aritmetice (adunare scădere icircnmulţire icircmpărţire) care
se pot aplica asupra acestor date se efectuează de regulă icircn aritmetica binară Figura
de mai jos arată regulile operaţiilor binare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
15
Numerele icircntregi pozitive sau nule cuprind 0 1 2 N N + 1
221 Sisteme de numeraţie
Un sistem de numeraţie face să-i corespundă unui număr N un anumit simbolism
scris şi oral icircntr-un sistem de numeraţie cu baza p gt 1 numerele 0 1 2 p ndash1
sunt numite cifre
Orice număr icircntreg pozitiv poate fi reprezentat astfel
N = a n-1 p n-1
+ + a1p + a0 cu ai apartinand multimii 0 1 2 p-1
Se utilizează de asemenea notaţia echivalentă N = a n-1a1a0
Numerele scrise icircn sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse
dintr-un mare număr de biţi şi de aceea se preferă exprimarea acestora icircn sistemele
octal (p = 8) şi hexazecimal (p = 16) deoarece conversia cu sistemul binar este
foarte simplă
Schimbări de bază (Conversii)
a) Zecimal - Binar
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 2 pacircnă cacircnd cacirctul devine
nul Numărul binar se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 2 = 119 rest 0
119 2 = 59 rest 1
59 2 = 29 rest 1
29 2 = 14 rest 1
14 2 = 7 rest 0
72 = 3 rest 1
32 = 1 rest 1
1 2 = 0 rest 1
Consideracircnd resturile de jos icircn sus se obţine 23810 = 111011102
b) Binar - Zecimal
Conversia se realizează prin icircnsumarea puterilor lui 2 corespunzătoare biţilor egali cu
1 (puterile se considera de la 0 de la dreapta spre stanga secventei binare)
Exemplu 111011102= 127 + 12
6 + 12
5 + 1 2
3+ 12
2+12
1 = 23810
c) Zecimal - Octal
Conversia se efectuează prin icircmpărţiri icircntregi succesive cu 8 pacircnă cacircnd cacirctul devine
nul Numărul octal se obţine scriind resturile icircn ordinea inversă
Exemplu Conversia lui 238
238 8 = 29 rest 6
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
16
29 8 = 3 rest 5
3 8 = 0 rest 3
Consideracircnd resturile de jos icircn sus se obţine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 8 382+58
1+68
0= 238
e) Zecimal - Hexazecimal
Conversia se efectuează prin icircmpărţiri icircntregi succesive prin 16 Testul de oprire
corespunde situaţiei cacirctului nul Numărul hexazecimal obţinut consideracircnd resturile
obţinute de la ultimul către primul OBS 0123456789 A(10) B(11)F(15)
e) Hexazecimal - Zecimal
Conversia se reduce la icircnsumarea puterilor lui 16
f) Binar - Octal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 3 biţi prin cifra
octală corespunzătoare Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stacircnga cu zerouri
Exemplu 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale icircn echivalentul ei binar pe 3
biţi
Exemplu
278 = 010rsquo1112 deoarece 28 = 0102 si 78 = 1112
h) Binar - Hexazecimal
Conversia se realizează icircnlocuind de la dreapta la stacircnga grupele de 4 biţi prin cifra
hexazecimală corespunzătoare Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stacircnga cu zerouri
Exemplu 1010112= 2B16
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale icircn echivalentul ei binar
pe 4 biţi
Exemplu
3A16 = 0011rsquo10102 deoarece 316= 00112 si A16=10102
Binar Octal Zecimal Hexa
0 0 0 0
1 1 1 1
10 2 2 2
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
17
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44) fie un sufix h (rezulta notatia 44h) Pentru reprezentarea
constantelor in octal se foloseste prefixul 0 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale
Aceste precizari sunt necesare deoarece in prezentarea diverselor componente
ale calculatorului vom intalni diversi parametri numerici reprezentati in forma
binara
Tema Numerele 9456 787 578 8476 se vor reprezenta (manual) in binar
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal
conform exemplelor de mai sus din curs Verificarea se va face cu start
programsaccessories calculator pe scientific
Se redacteaza modul de lucru intr-un fisier doc si se trimite fisierul arhiva
conversii_numeprenume_gruparar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014gmailcom Termen 21 oct 2013 (si pt
ascii+unicode)
222 Numere icircntregi negative
Numerele icircntregi negative pot fi codificate prin trei metode
semn şi valoare absolută (SVA)
complement logic sau restracircns sau faţă de 1 (C1)
complement aritmetic sau adevărat sau faţă de 2 (C2)
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
18
SVA Prin metoda ldquo semn şi valoare absolutăldquo numerele se codifică sub forma plusmn
valoare absolută
Prin această reprezentare se sacrifică un bit pentru semn In mod normal 0 este
codul semnului + iar 1 este codul semnului - icircn aceste conditii
Această metodă de reprezentare prezintă unele inconveniente
- numărul zero are două reprezentări distincte 0000 şi 1000 adică +0 si - 0
- tabelele de adunare şi icircnmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat
Complement logic şi aritmetic
C1 Complementul logic (complement faţă de 1) se calculează icircnlocuind pentru
valorile negative fiecare bit 0 cu 1 şi 1 cu 0
C2 Complementul aritmetic (complement faţă de 2) este obţinut adunacircnd o unitate
la valoarea complementului logic
Exemplu Reprezentarea numărului (-6) pe 4 biţi +6 = 0110 (primul 0 din stg
este al semnului +)
Semn şi valoare absolută - 6 = 1110
Complement faţă de 1 - 6 = 1001 (am laquo negat raquo bitii de 0 si 1 de la 0110 )
Complement faţă de 2 - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uşor constata că intervalul numerelor icircntregi N care se pot reprezenta icircn
complement faţă de 1 este acelaşi ca şi pentru reprezentarea ldquosemn şi valoare
absolutăldquo
Complement aritmetic sau adevărat sau faţă de 2 (C2)
Se poate remarca faptul că bitul cel mai din stacircnga (bitul de semn) este icircntotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări conform tabelului următor
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
19
Reprezentarea icircn complement faţă de 1 recunoaşte două zerouri (+0 si ndash0) dar este
simetrică deoarece aceleaşi numere pozitive şi negative sunt reprezentabile iar
această situaţie se poate uşor realiza electronic
In complement faţă de 1 sau faţă de 2 operaţiile aritmetice sunt avantajoase
deoarece operaţia de scădere se realizează prin adunarea complementului
Intr-o adunare icircn complement faţă de 1 o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut
Spre deosebire de complementul faţă de 2 cacircnd această cifră de transport se ignoră
In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decacirct icircn cazul icircn
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite
Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = minus1
1 1 1 1 1 1 1 0 = minus2
1 0 0 0 0 0 0 1 = minus127
1 0 0 0 0 0 0 0 = minus128
Numere ntregi reprezentati in complement fata de 2 pe 8 biti
Complement fata de 2 Zecimal
0001 1
0000 0
1111 minus1
1110 minus2
1101 minus3
1100 minus4
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
20
Numere ntregi reprezentati in complement fata de 2 pe 4 biti
1111 1111 255
minus 0101 1111 minus 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161
3Programe Sisteme de operare
Sistemul de calcul prelucrează datele numai dacă este programat Programul constă dintr-o
succesiune de instrucţiuni care converg pe baza unui algoritm către soluţia problemei ce
urmează să se rezolve Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective efectuacircnd anumite acţiuni asupra unor date Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru icircndeplinirea acestei
sarcini Ca urmare programul trebuie să conţină două categorii de informaţii
a Descrierea datelor de intrare de ieşire şi auxiliare care vor fi prelucrate
b Descrierea algoritmului aplicat pentru prelucrarea acestor date
Icircn anul 1973 John Wirth a enunţat că programul poate fi caracterizat prin relaţia
Program = Date + Algoritm
Relaţia pune icircn evidenţă legătura stracircnsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program
ALGORITM = LOGICA + CONTROL ( R Kowalski 1979 )
SISTEM EXPERT = CUNOASTERE + METAINTERPRETARE (Sterling 1984 )
MODELARE = CUNOASTERE + REPREZENTARE
LIMBAJE = PROCESARE + INTERPRETARE
Ansamblul programelor este numit software
Software-ul poate fi
a De sistem ndash coordonează modul icircn care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază)
b De aplicaţie ndash sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie)
Observaţie
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hardndashsoft)
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
21
Clasificarea software-ului
31 Limbaje de programare Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale necesar instruirii unui calculator pentru a realiza anumite activităţi
Observatie
bdquoIcircn actul de procesare un limbaj foloseşte termenul de ldquoentitaterdquo prin intermediul căruia
se realizează procesarea şi cunoaştere
Definiţie Un limbaj de cunoaştere este sistemul virtuallogic
L = ( V Sin Sem O C T Tc) unde
V = vocabularalfabet Sin = sintaxa (reguli) Sem = semantica (reguli) O = obiecte C
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
22
= concepte termeni T = teorii metode tehnici de rezolvare Tc = tezaurul
cunoaşterii (baza de cunoştinţe)
Limbajele cunoaşterii sunt
Limbajele naturale (utilizate de popoare limbile popoarelor) ndash entitate=cuvacircnt
construcţiile lexicale descriu stări imagini acţiuni etc
Limbajele ştiinţificetehniceeconomice (utilizate icircn domeniile ştiinţelor)-
entitate=cunoştinţă studiul obiectelor şi a relaţiilor dintre obiecte icircn domeniile
matematică fizică chimie informatică biologie economie etc
Limbajele artificiale (utilizate icircn domeniul calculatoarelor) formate din
Limbaje de programare procedurală ndash entitate=locaţie de memorie
Limbaje de programare fucţională ndash entitate=element de listă
Limbaje de programare logică ndash entitate=obiect clauza
Limbaje de programare obiectuala ndash entitate=obiect
Limbaje de programare Web ndash entitate=elemente multimedia
Limbaje pentru baze de date ndash entitate=icircnregistrare
Limbaje pentru grafica pe calculator ndash entitate=obiect grafic
Limbaje pentru modelare-simulare ndash entitate=eveniment
Limbaje pentru sisteme de operare ndash entitate=proces
Limbaje pentru Inteligenţa Artificială ndash entitate=cunoştinţărdquo M Vlada Bucuresti 2012
Aspectele caracteristice ale limbajelor de programare sunt
Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse Se defineşte gramatica ca fiind mulţimea regulilor sintactice
Semantica ndash indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului
Pragmatica ndash este capacitatea de a utiliza construcţiile sintactice şi semantice
Există limbaje generale ( Pascal C) de prelucrare a bazelor de date ( COBOL dBASE SQL) orientate spre
obiect ( SmallTalk C++ Java) editoare de texte şi hiper-texte ( HTML TeX PostScript ) de nivel scăzut (
Assembler ) folosite icircn inginerie matematică fizică ( Fortran Matlab Mathematica) şi lista poate
continua
Fiecare limbaj are avantaje şi dezavantaje icircnsă se remarcă tendinţa de apropiere de limbajul natural
formalizat de simplificare a construcţiilor foarte des folosite de a structura icircn mod logic diverse secţiuni ale
programelor scrise icircn limbajul respectiv de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes Java API ndash Java Aplication Programming Interface)
O clasificare a limbajelor de programare cuprinde pe cele
a Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare unitatea
de bază este procedura sau funcţia se aplică principiul programării structurate prin care orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică secvenţială
(liniară) alternativă (de selecţie) ciclică (repetitivă) Exemple Algol60 FortranPascal C PL1
Ada etc
b Modulare - Programul se descompune icircn module Acestea sunt independente (atomice) Principiul
de bază este icircncapsularea Modulul are două componente interfaţa şi implementarea Exemple
Modula Ada etc
c Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală Programul este un ansamblu de obiecte
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
23
icircn interacţiune Exemple Ada 95 boo C++ C ColdFusion Common Lisp CorbaScript COOL
(Object Oriented COBOL) D Delphi ECMAScript (JavaScript) Eiffel F-Script programming
language Fortran 2003 Gambas IDLscript incr Tcl J Java JavaScript Lexico Objective-C Perl
5 PHP Simula Smalltalk Visual Basic VBNET etc
d Specifice programării funcţionale Programul este un ansamblu de funcţii şi apeluri recursive
funcţiile sunt folosite la descrierea datelor şi codului nu există instrucţiuni de atribuire
Fundamentul matematic este dat de expresiile lambda Exemple Lisp ML etc
e Specifice programării logice - Icircn programarea logică programul constă din fapte şi reguli
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei Fundamentul
matematic este asigurat de sistemele logice formale logica predicatelor de ordinul 1 precum şi logici
modale temporale sau monotonice Exemplu Prolog Mercury Visual Prolog Oz Metaphor etc
f Specifice programării concurente şi distribuite ndash Ada Alef ChucK Cilk Comega Concurrent
Pascal E Erlang Java Joule Limbo MozartOz Occam Pict Promise SR etc
g Specifice bazelor de date SQL dBase FoxPro MS SQL MySQL MS Access etc
h Specifice programării Web ASP ASPNET PHP JSP Limbaje de scripting pe serverclient
VBScript JavaScript JavaBeans EJB Cold Fusion PERL PHP etc
i Specifice programarii bazate pe agenţi Telescript Agents AgentTcl etc
După modul cum au evoluat icircn timp limbajele de programare se icircmpart icircn
limbaje de primă generaţie limbajul maşină (machine language)
limbaje de generaţia a doua limbajul de asamblare (assembly language)
limbaje de generaţia a treia limbajele de nivel icircnalt (high-level programming languages)
limbaje de generaţia a patra limbaje mai apropiate de limbajul uman (very high-level
programming languages) decacirct limbajele de nivel icircnalt
Limbajul maşină
este limbajul pe care calculatorul icircl icircnţelege icircn mod direct
programele se scriu icircn cod binar succesiuni de 0 şi 1
fiecare instrucţiune corespunde unei combinaţii de biţi
programatorul trebuie să cunoască detaliat structura hardware a calculatorului
programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program
pot să apară erori datorită concepţiei programului sintaxei suprapunerii adreselor de memorie etc
Limbajul de asamblare
a apărut icircncepacircnd cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină
programele se scriu icircn mod text (mnemonice) pentru ca apoi să fie traduse icircntr-o formă binară
corespunzătoare limbajului maşină
limbajul de asamblare este tradus icircn limbaj maşină de către assembler
limbajele de asamblare icircncă solicită programatorului cunoaşterea de multe detalii hardware
este specific anumitor tipuri de calculatoare
Observaţie
Limbajul de asamblare icircmpreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages)
Limbajele evoluate (High Level Languages)
permit formularea soluţiilor problemei de rezolvat icircn termeni mai apropiaţi de cei folosiţi de oameni
sunt mult mai apropiate de limbajul uman
au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori
programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
24
după modul cum se face transpunerea programelor evaluate există două tipuri de astfel de
componente software specializate
1 interpretor traduce succesiv instrucţiunile de nivel icircnalt icircntr-o formă intermediară care este
apoi executată poate execută un program imediat
2 compilator traduce instrucţiunile de nivel icircnalt direct icircn limbaj maşină Compilatorul
necesită mai mult timp Programele produse de compilator rulează mul mai rapid decacirct cele
produse de interpretor
majoritatea programelor evolute au la dispoziţie atacirct compilator cacirct şi interpretor interpretorul se
foloseşte icircn timpul realizării unui program pentru testarea unor mici secţiuni ale programului Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC LISP)
dacă limbajele sunt standardizate atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele icircn limbajul maşină
specific producătorului devine posibil ca un program respectacircndu-se aceste standarde să poată fi
compilat pe diverse calculatoare şi apoi executat
Prin scrierea unui program icircntr-un limbaj evoluat se face o economie imensă de timp Programatorul pierde
mai puţin timp pentru scrierea icircntr-un limbaj mult mai apropiat de cel uman decacirct dacă acelaşi program ar fi
scris icircn limbaj maşină Timpul de compilare al programului este de ordinul secundelor
Icircn figura 11 sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul
Figura 11 Primele trei generaţii de limbaje de programare
Icircn ultimii ani limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network ndash wwwsuncom) acum Oracle (wwworaclecom) a devenit unul dintre cele mai
populare limbaje de programare Principalele sale calităţi sunt uşurinţa de icircnvăţare existenţa unor
instrumente de dezvoltare puternice care permit programatorilor să realizeze rapid şi eficient aplicaţii
complexe şi posibilitatea de a rezolva un număr vast de probleme atacirct din sfera comercială cacirct şi din cea
ştiinţifică
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
25
Informatica aplicata Constructii 2014-2015 OctavendashFREE (Matlab) +Java
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
26
Studiu de caz Limbajul Java hellipsem2
32 Limbajul Java - Istoric
Primii paşi icircn realizarea limbajului Java au fost făcuţi icircn aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS) Iniţial scopul echipei era să creeze software destinat produselor electronice comerciale Aceste
echipamente se definesc ca mici portabile distribuite şi lucracircnd icircn timp real De la aceste aparate se cer icircn
general fiabilitate şi uşurinţă icircn exploatare Foarte curacircnd echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat icircntr-un mediu independent de platforma
hardware Grupul de cercetare a icircncercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste icircncercări s-au soldat cu un eşec datorită complexităţii acestui limbaj Confruntaţi cu această problemă
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie mai
flexibil mai simplu şi mai portabil Aşa s-a născut Java limbaj de programare capabil să ruleze pe orice
dispozitiv conectat la o reţea staţii de lucru Sun PC-uri calculatoare MacIntosh PDA-uri (Personal Digital
Assistant) telefonie mobilă şi chiar frigidere aparate de prăjit pacircine etc
Icircn dezvoltarea limbajului Gosling şi echipa sa au icircmprumutat din caracteristicile limbajelor de programare
consecrate cum ar fi C++ si SmallTalk dar icircn acelaşi timp au creat un limbaj extrem de robust prin
icircndepărtarea facilităţilor catalogate ca bdquopericuloaserdquo din C++ cum ar fi pointerii supraicircncărcarea
operatorilor şi alocarea dinamică a memoriei
Numele iniţial al limbajului a fost Oak (stejar) copac care creştea icircn faţa biroului lui James Gostling
Ulterior s-a descoperit că numele fusese deja folosit icircn trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi icircnlocuit cu Java
Pe data de 23 mai 1995 după patru ani de cercetare şi dezvoltare firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java cacircnd a făcut publică şi specificaţia noului limbaj la SunWorld icircn San
Francisco
Icircn aceeaşi perioadă Marc Andreessen student care lucra la National Center for Supercomputing
Applications (NCSA) a creat primul browser pentru World Wide Web Mosaic 10 Pe la mijlocul anului
1994 creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care icircl dezvoltau Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu icircn
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil pacircnă atunci posibilitatea de a rula icircn
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor
Icircn Noiembrie 1995 a fost făcută disponibilă pe site-urile firmei Sun Microsystems prima versiune de Java
(beta) fiind căutată de zeci de mii de persoane şi sute de firme Prima versiune populară de Java a fost Java
102 care a apărut icircn 1996 distribuită de Sun sub forma JDK102 (Java Development Kit) Aceasta
conţinea compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator generator de
documentaţie dezasamblor) Iniţial au existat versiuni pentru sistemele de operare Sun Windows 3x95 şi
MacOS Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri Linux etc)
Icircn 1997 a apărut JDK11 beneficiind de multe icircmbunătăţiri şi extensii Unele programe compilate cu
versiuni 102 ale compilatorului nu sunt compatibile cu Java11 decacirct dacă sunt recompilate Un program sau
applet Java 11 nu va rula icircntr-un mediu Java102 Java 115 a adus icircmbunătăţiri icircn interfaţa utilizator
tratarea evenimentelor şi o mai mare consistenţă a limbajului
Icircn decembrie 1998 a fost lansată noua versiune Java 2 care introduce cacircteva facilităţi avansate Swing ndash noi
funcţii care permit crearea unei interfeţe utilizator grafice fie icircn stilul unui anumit sistem de operare fie icircn
noua prezentare grafică Java numită Metal drag and drop ndash posibilitatea de a transfera interactiv
informaţii icircntre diferite aplicaţii sau dintr-o parte a interfeţei programului icircn alta revizuirea completă a
funcţiilor din Java icircn sensul alinierii acestora la posibilităţile audio ale altor limbaje etc
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
27
Partea de control nu a fost neglijată cu toate că versiunea principală nu este concepută pentru uz industrial
sau icircn dispozitive cu capacităţi restracircnse Sun a lansat două linii paralele de Java PersonalJava pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare
1 PersonalJava (httpjavasuncomproductspersonaljavapj-emulationhtml) - este un nou mediu de
dezvoltare a aplicaţiilor Java pentru dispozitive conectabile icircn reţea cu capacităţi mai reduse decacirct
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial) Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile icircn sus Prezintă următoarele particularităţi mecanisme de incărcare şi execuţie
dinamică a codului ceea ce permite să se facă modificări foarte uşor icircn codul aplicaţiilor
dimensiune redusă a codului generat (codul binar Java este mult mai compact icircn raport cu celelalte
coduri) este printre primele limbaje care aduce tehnologia orientată spre obiect icircn astfel de
dispozitive Java icircsi menţine portabilitatea şi icircn acest domeniu tocmai datorită faptului ca el rulează
icircn interiorul unei maşini virtuale PersonalJava include o maşină Java virtuală un set de librării de
bază şi un set de librării opţionale care pot fi folosite după preferinţă Pachetele sunt concepute
modular şi scalabile permiţacircnd de exemplu folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea
2 EmbeddedJava (httpjavasuncomj2meindexjsp) este icircn mod asemănător cu PersonalJava o
versiune de Java pentru dispozitive cu facilităţi restracircnse cu deosebirea că este mult mai putin
pretenţios A fost proiectat să fie mult mai modular scalabil şi configurabil rulacircnd cu un minim
posibil de memorie asiguracircnd o serie de nivele de funcţionalitate Această versiune asigură suportul
unor instrumente absolut necesare unelte de inserare a codului executabil icircn memoriile ROM unelte
pentru compilarea compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare
Din 1995 şi pacircnă icircn prezent lumea Java trăieşte icircntr-o continuă agitaţie apăracircnd alte şi alte inovaţii şi
modificări ale limbajului Alături de JDK - Java Development Kit (httpjavasuncomj2se150indexjsp)
pus la dispoziţie de compania Sun Microsystems au apărut noi medii de dezvoltare a aplicaţiilor Java Sun
ONE Studio 5 (httpwwwssuncomsoftwaresundevjde) JCreator (httpwww jcreator com) BlueJ
(httpwwwbluejorg) Borland JBuilder (httpwww borland comproductsdownloads
download_jbuilder html) RealJ (httpwwwrealj com) DrJava (httpdrjava sourceforge net)
NetBeans IDE (httpwwwnetbeansorg) JIPE (httpjipesourceforgenet) Visual Age for Java
(httpwww7bsoftware ibmcom wsddzonesvajava ) etc
33 Tehnologia Java
httpwwwjavacomendownloadwindows_iejsplocale=enamphost=wwwjavacom80
Java este un limbaj de programare orientat spre obiect destinat iniţial pentru aparatura electronică inteligentă
conectată icircn reţea proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca pe
langă domeniul World Wide Web să poată fi folosit şi pentru dezvoltarea de software de interes general
Icircn acelaşi timp Java este şi o platformă icircn sensul că oferă o arhitectură multi-nivel şi distribuită obiect
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple ceea ce permite
scalabilitate securitate performanţă şi o uşoară interfaţare cu sistemele existente
331 Limbajul de programare Java
O caracteristică particulară a programelor Java este că sunt icircn acelaşi timp interpretate şi compilate
Compilarea constă icircn traducerea programelor scrise icircn limbajul Java icircntr-un limbaj intermediar numit
bytecode (cod de octeţi) Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine ndash JVM) Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă Compilarea are loc o singură dată pe cacircnd interpretarea este un proces care se repetă de
fiecare dată cacircnd un program Java este lansat icircn execuţie Instructiunile bytecode sunt de fapt instrucţiunile
icircn cod maşină pentru Maşina Virtuală Java (Java Virtual Machine) Orice interpretor Java fie el javaexe sau
un browser Web capabil să ruleze appleturi este de fapt o implementare a maşinii virtuale Java
Java bytecode face posibilă filozofia ldquoscrie odată execută oriunde - write once run anywhererdquo care a fost şi
este scopul urmărit de către dezvoltatorii limbajului Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
28
332 Platforma Java
O platformă este definită drept contextul software sau hardware icircn care rulează un program Exemple de
platforme sunt Windows 2003 Server Windows XP Linux Sun Solaris etc Majoritatea platformelor pot fi
descrise ca o combinaţie de componente hardware şi software Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware
Platforma Java are două componente
Maşina Virtuală Java (Java Virtual Machine - JVM)
Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface ndash Java API)
Aceste componente asigură legătura dintre un program scris utilizacircnd limbajul Java şi o platformă harware
oarecare Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează aşa cum se poate vedea icircn figura 12
Figura 12 Un program care rulează pe o platformă Java
333 Maşina virtuală Java
Maşina virtuală Java (JVM) este un calculator abstract care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware Prima variantă a JVM a fost concepută de James Gosling icircn anul 1992
după care a fost dezvoltată de o echipă de la firma Sun Microsystems cu contribuţii de la colaboratori din
icircntreaga lume In prezent JVM a fost implementată pe o mare varietate de platforme Windows Linux
MacOS Solaris etc
Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia
Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice
1 Programul este scris icircntr-un limbaj de nivel superior (de exemplu icircn C C++ Pascal etc) care nu
depinde de tipul de calculator folosit şi apoi este compilat adică este tradus icircntr-un program binar
destinat pentru un anumit tip de calculator Acest program poate fi executat direct de către
procesorul calculatorului respectiv deoarece foloseşte setul de instrucţiuni specific acestuia
Compilarea se face de către un program special numit compilator Trebuie să existe cacircte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie iar programele
binare rezultate din compilare nu pot fi transmise icircntre calculatoare de tipuri diferite Icircn cazul
programelor compilate icircn timpul execuţiei acestora icircn memoria calculatorului nu se găseşte
programul sursă scris icircn limbaj de nivel superior ci doar programul binar rezultat după compilare
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
29
2 Icircn loc ca programele să fie compilate ele pot fi interpretate icircn timpul execuţiei programului icircn
memoria calculatorului se găseşte chiar programul sursă icircn limbaj de nivel superior icircmpreună cu un
program binar numit interpretor Acesta parcurge instrucţiunile programului sursă şi le
interpretează adică le traduce icircn instrucţiuni binare aparţinacircnd setului de instrucţiuni al
procesorului şi le transmite pe racircnd procesorului pentru a fi executate Exemple de limbaje
interpretate sunt limbajul Basic limbajele de comandă ale sistemelor de operare limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat) dar prezintă şi dezavantajul că
executarea programelor se face mai lent decacirct icircn cazul celor compilate Din această cauză atunci
cacircnd viteza de execuţie este esenţială se preferă programele compilate
Icircn cazul limbajului Java portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
icircn urma compilării Aceasta s-a obţinut prin adoptarea unei soluţii de compromis icircntre cea a programelor
compilate şi a programelor interpretate
Maşina virtuală Java este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului setul de regiştri şi organizarea memoriei Limbajul Java icircn sine este un limbaj de nivel
superior asemănător lui C++
Procesul de execuţie a unui program Java este descries in Figura 13 Programul scris icircn Java este compilat
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini Icircn cazul
general maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decacirct maşina
virtuală Java Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat icircn timpul execuţiei
icircn memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java adică un program care interpretează acest cod de octeti Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă deşi totuşi ceva mai lentă decacirct executarea unui
program binar compilat special pe maşina pe care se execută
Observaţii
1 Deoarece maşina virtuală Java este un calculator abstract universal nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise icircn limbajul Java Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java acest cod
putacircnd fi apoi executat pe orice calculator pe care există un interpretor Java Astfel de compilatoare
există deja pentru diferite limbaje ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi indiferent de
limbajul icircn care ele au fost scrise
2 Unii fabricanţi de microprocesoare (icircn frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java Ele pot executa direct codul de octeţi fără a mai avea nevoie de
un interpretor ceea ce măreşte viteza de execuţie a programului
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
30
Figura 13 Procesul de execuţie a unui program Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
31
334 Terminologie
JDK ndash Java Development Kit conţine instrumentele folosite pentru dezoltarea de software icircn el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment) Pe lacircngă maşina virtuală Java JDK mai conţine
compilatorul de Java un instrument de vizualizare a applet-urilor un generator de documentaţii utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java
SDK ndash este o altă denumire pentru JDK deoarece icircncepacircnd cu lansarea lui Java 2 compania Sun s-a referit
la acesta cu numele de Java Software Development Kit
JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM
Există trei ediţii de JDK fiecare din ele fiind livrată cu cacircte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii
J2SE ndash Java 2 Standard Edition ndash este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general Această ediţie conţine o maşină Java
optimizată pentru partea de client (wwwsuncomdownloadsj2se with netbeanshellip)
httpscdssuncomis-binINTERSHOPenfinityWFSCDS-CDS_Developer-Siteen_US-
USDViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition ndash este o versiune livrată cu un set restracircns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile Are două linii paralele de
dezvoltare PersonalJava şi EmbeddedJava
J2EE - Java 2 Enterprise Edition ndash este o versiune care conţine tot ceea ce se află icircn J2SE la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de icircntreprindere (sisteme de prelucrare de tranzacţii servere Web
servicii de mesagerie etc Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server care poate fi descărcată separat (HotSpot Server VM -
httpwwwsoftpilecom Development JavaReview_03157_indexhtml ) J2EE simplifică
aplicaţiile tip icircntreprindere prin construirea lor pe baza unor componente modulare standardizate
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei fără o programare complexă Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp
tehnologia J2EE permite dezvoltatorilor de sisteme de tip icircntreprindere să se concentreze asupra
icircmbunătăţirii strategiei de afaceri decacirct să creeze infrastructura acesteia
JVM - Java Virtual Machine ndash este software-ul care execută toate aplicaţiile Java Constă din cacircteva fişiere
care sunt plasate icircn directoarele din JDK sau JRE unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator Pentru utilizator numele
maşinii JVM este java nume standard al comenzii necesare pentru a rula JVM nume ce trebuie urmat de
numele programului Există două semnificaţii pentru termenul JVM
1 Fişierul binar care există icircn sistemul de fişiere instalat pe calculator cacircnd s-a instalat JDK sau JRE
2 Instanţă particulară care se icircncarcă icircn memoria calculatorului cacircnd se execută un program fiind
executată ca un proces din sistemul de operare Fişierul binar nu este icircncărcat şi nici nu se schimbă
ceea ce permite ca să fie rulate icircn acelaşi timp mai multe instanţe ale maşinii JVM
jar ndash este extensia ce corespunde unui fişier arhivă Java creat cu utilitarul jar din Java Folosind opţiunea ndash
jar comanda java permite lansarea icircn execuţie a unui program Java care este stocat icircntr-un fişier jar
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
32
class ndash este extensia fişierului obţinut (numit de clase) după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia java) Fişierele de clase reprezintă forma executabilă a
programelor Java Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM
JavaBeans ndash numele componentelor de cod Java reutilizabile Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean
335 Java API
Java API este o colecţie de componente software care pot fi utilizate icircn realizarea de programe Elementele
acestei colecţii sunt grupate icircn biblioteci de clase şi interfeţe numite pachete (packages) Gruparea
elementelor se face icircn funcţie de funcţionalitatea pe care acestea o oferă O implementare completă a
platformei Java oferă printre altele următoarele
Elemente de baza Obiecte şiruri de caractere numere structuri de date date calendaristice
timp intrareieşire etc
Appleturi Un set de standarde utilizate icircn realizarea programelor care rulează icircn interiorul unui
navigator Web
AWTSwing Set de instrumente pentru realizarea de interfeţe grafice (GUI)
Servleturi Un set de standarde utilizate icircn realizarea servleturilor
Programarea retelelor URL TCP UDP sockets adrese IP
Procesarea documentelor XML Simple XML Parsing (SAX) Document Type Definition
(DTD) Document Object Model (DOM)
Securitate Semnături digitale controlul accesului managementul cheilor publice şi al celor
private
Componente Software Cunoscute sub numele de JavaBeans acestea pot fi utilizate icircn cadrul
altor arhitecturi de componente
Serializarea obiectelor Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation)
Java Database Connectivity Standardizează accesul la sistemele de baze de date relaţionale
Internaţionalizarea aplicaţiilor Setarea localizării formatări texte
Icircn plus există un API pentru grafica 2D şi 3D mesagerie electronică animaţie telefonie sunet şi multe alte
domenii Figura 14 prezintă componentele care sunt incluse icircn Java 2 SDK
Figura 14 Componentele Java 2 SDK
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
33
Java 2 SDK Standard Edition v 14 Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java clasele care formează nucleul platformei şi fişiere de suport Java 2 SDK include pe lacircngă JRE şi unelte
de dezvoltare cum ar fi compilatoare şi depanatoare Pentru Java 2 SDK 16 17 -
httpjavasuncomjavase6docs
336 Tipuri de aplicaţii Java
Cu ajutorul API Java suportă o varietate mare de aplicaţii Principalele tipuri de programe Java sunt
1 Applet-uri Java - sunt cele mai răspacircndite programe Java Toate appleturile urmează o serie de
convenţii care le permit să ruleze icircn interiorul unui navigator (browser) Web care icircncorporează o
maşină virtuală Java Appleturile sunt incluse icircn pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora
2 Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii fiind o puternică
platformă software Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe cu deosebirea că pentru a le rula icircn sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment)
3 Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server ca efect al unei cereri primite Acestea afişează numai rezultatul
procesării sub forma unui fişier HTML (HyperText Markup Language) Implementarea de tip
cerererăspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol)
34 Caracteristici ale limbajului Java
Dacă am dori să rezumăm limbajul Java icircn cacircteva cuvinte cheie acestea ar fi
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platformă
Performant
Aceşti termeni nu sunt doar pentru ldquoreclamărdquo - ei icircşi găsesc justificarea icircn implementarea limbajului
1 Simplitate Deşi icircmprumută multe aspecte din limbajele C şi C++ limbajul Java renunţă la unele
trăsături considerate neesenţiale ale acestora Aparent limbajul are mai puţine grade de libertate
decacirct C si C++ dar icircn realitate poate realiza aceleaşi lucruri cu un plus de claritate Au fost
eliminate acele facilităţi care icircn opinia experţilor produceau mai mult confuzie decacirct să aducă
beneficii
supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor)
moşteniri multiple
conversii automate a tipurilor de date
pointeri la date
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
34
Pointerii reprezintă un mecanism deosebit de ldquopericulosrdquo din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate dată de nerestricţionarea accesului lor este deosebit de uşor să se facă scriereacitirea
dintr-o zonă de date interzisă ceea ce va conduce la coruperea datelor icircn mod intenţionat sau nu
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date nefiind permisă
modificarea unui tip icircntreg de date icircntr-un handler şi prin aceasta accesarea necontrolată a unei
zone de memorie S-au adăugat facilitatildeţi de ultimă oră dintre care cea mai importantă este
managmentul automat al memoriei Aceasta simpifică imens munca programatorului icircn schimbul
complexităţii mai ridicate a sistemului O sursă comună generatoare de complexitate şi probleme
este gestionarea memoriei alocarea şi eliberarea ei la momente bine specificate de timp Prin
facilitatea oferită de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite icircn mod automat s-a reuşit nu numai
icircnlesnirea muncii programatorului dar şi reducerea imensă a timpului necesar finalizării unui
proiect deoarece eliminacircnd problema gestionării memoriei se elimină automat cea mai mare sursă
generatoare de ldquoscamerdquo (bug-uri) Dealocarea memoriei se face icircn mod uniform fără intervenţia
programatorului Există un ldquocolector de gunoaierdquo (garbage collector) a cărui implementare icircn Java
este făcută inteligent şi eficient folosind un fir separat de execuţie Astfel colectarea ldquogunoaielorrdquo
se face de obicei icircn timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele
Eliberarea nu se face neapărat imediat ci atunci cacircnd spaţiul disponibil curent nu mai poate satisface
o nouă cerere
Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc) deci capabil de a rula icircn astfel de dispozitive
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse
2 Orientare spre obiect (object-oriented) Ca şi C++ Java foloseşte clase pentru organizarea logică a
codului La executare programul creează obiecte de tipul claselor Este admisă şi larg utilizată
moştenirea claselor dar nu este permisă moştenirea multiplă Aceasta este suplinită de o altă
facilitate numita interfaţă Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează icircntre ele Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare mai curate şi mai apropiate de modul de gacircndire uman şi se
permite reutilizarea codului Facilităţile din puncul de vedere al orientării spe obiect sunt cele
oferite de limbajul C++ extinse cu facilităţile oferite de Objective C pentru a oferi o dinamică mult
mai mare metodelor sale
3 Portabilitate Limbajul Java este independent de platformă Programele Java sunt mai icircntacirci
compilate icircntru-un cod intermediar numit bytecode şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java ldquocreatărdquo la instalarea limbajului Java) icircn instrucţiuni maşină
asociate platformei sistem Fişierele bytecode (care au extensia class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows Unix Solaris etc Applet-urile pot rula direct icircntr-un
navigator Web (Internet Explorer Netscape etc) Anumite aplicaţii icircncorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor icircntre diverse sisteme de operare Cacircteva exemple ar fi
Corel Word Perfect sau Netscape Communicator
4 Claritate Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
icircnteles Icircn plus se consideră că limbajul Java este uşor de icircnteles cu condiţia ca cel care icircl prezintă
să fi icircnţeles el icircnsuşi foarte bine mecanismele puse la dispoziţie
5 Robusteţe Robusteţea limbajului este asigurată de o serie de mecanisme de icircnaltă performanţă cum
ar fi verificarea timpurie a programelor pentru posibile probleme verificarea dinamică tacircrzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor icircn timpul compilării icircn ideea de a elemina un
număr cacirct mai mare de erori Din păcate limbajul C++ moşteneşte din C o serie de probleme la
verificarea icircn timpul compilării şi acesta doar pentru a păstra compatibilitatea icircn jos Deoarece Java
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
35
nu are ce compatibilitate icircn jos să menţină nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi greşite sau incomplet făcute
6 Dinamicitate Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale De
exemplu considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte dacă compania A produce o nouă versiune a aceleiaşi
componente atunci pentru a o integra compania B trebuie să-şi recompileze icircntreaga aplicaţie şi să
o redistribuie din nou clienţilor săi Deoarece Java face conexiunile dintre module abia la rulare sunt
eliminate cu succes aceste probleme Indiferent cacircte modificări ar interveni icircn librăria producătorului
A (cu păstrarea compatibilităţii) Java se va executa fără recompilări şi probleme Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă implementacircnd toate obiectele şi metodele interfeţei De asemenea moştenirea pasează
atacirct metodele cacirct şi implementarea lor de la superclasă la subclasă O clasă este capabilă să
moştenească numai o singură clasă dar poate implementa cacircte interfeţe doreşte Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele icircntre ele specificacircnd ce se
conectează şi nu cum se face Un alt avantaj este identificarea icircn timpul rulării al tipului de dată
printr-un mecanism foarte ingenios fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă icircn acest mod se poate
determina foarte elegant tipul obiectului respectiv Acestă facilitate este inexistentă icircn C sau C++
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării şi aceasta deoarece icircn
Java programele sunt verificate atacirct icircn timpul compilării cacirct şi icircn timpul rulării Astfel se poate avea
deplină icircncredere icircn conversiile de date executate icircn Java deoarece sunt verificate de două ori Icircn C
sau C++ limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă cea ce nu icircntotdeauna este adevărat Ca o facilitate icircn plus se poate căuta o clasă (icircn timpul
rulării) specificacircndu-se numai numele acesteia icircntr-un şir de caractere odată găsită clasa se poate
icircncarca şi instanţia oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria tocmai din cauză că nu trebuie să lucreze direct cu ea Din cauză că nu există pointeri nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin situaţii care se pot icircntacirclni icircn C sau
C++ Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme Java are la bază o legare
dinamică forţată de compilator Aceste implementări sunt icircnsoţite de o asistenţă de exemplu dacă la
invocarea unei metode se obţine ceva greşit programatorul este icircnştiinţat icircn timpul compilării şi nu
icircn timpul execuţiei cacircnd invocarea respectivă are loc efectiv
7 Depanare uşoară Datorită fluxului de cod binar al cărui proprietar este sistemul Java mai multă
informaţie este stocată icircn format binar ceea ce face operaţia de depanare (debugging) mult mai
facilă Un dezansamblor este icircn măsură să restabilească codul icircn procent de aproape 100 la forma
sa iniţială lucru care la alte limbaje este practic imposibil La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct icircn cod maşină
specific platformei pe care se lucreză S-a obţinut cod puternic optimizat optimizările necesare
realizacircndu-se icircn timpul conversiei
8 Tipizare statică Obiectele folosite icircntr-un program Java trebuie obligatoriu declarate icircnainte de a fi
folosite Icircn acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip
9 Limbaj concurent Java are capacitatea de a executa mai multe secvenţe de cod simultan Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri)
10 Limbaj distribuit Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul icircn reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
36
pe metode de monitorizare şi condiţionare Integracircnd toate aceste mecanisme icircn nucleul limbajului
acesta a devenit mult mai simplu robust şi mai uşor de folosit Limbajul oferă un răspuns mult mai
interactiv şi un comportament icircn timp real Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie Mediul Java are un bun răspuns icircn timp real rulacircnd ldquodeasuprardquo unor sisteme de
operare Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul icircn
timp real al aplicaţiei scrise icircn Java
11 Suport pentru reţele de calculatoare Modul icircn care acest suport este integrat icircn limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe fac ca Java să fie unic icircn domeniul
reţelelor de calculatoare Librăriile şi rutinele implementate asigură suport pentru protocoale TCPIP
(Transmission Control ProtocolInternet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol) Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune icircn reţea utlilizacircnd limbajul Java decacirct limbajele C sau C++ programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere
12 Securitate ridicată Java asigură un grad de securitate ridicat uneori cu un plus de efort din partea
programatorului Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă De asemenea este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului cu atacirct mai
mult cu cacirct a fost vizat să atingă mediile orientate pe reţele şi programare disribuită permitacircndu-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure implementacircnd de asemenea
şi librării de funcţii avansate de criptografie majoritateta bazate pe tehnologii de ultimă oră (chei
publice) Există o puternică interdependenţă icircntre robusteţe şi securitate eliminacircndu-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care icircn mod normal nu au acces din cadrul programului aceasta
eliminacircnd majoritatea căilor de acces a viruşilor
13 Extensibilitate Limbajul Java permite includerea de metode native adică de funcţii scrise icircn alt
limbaj (de obicei C++) Metodele native sunt legate dinamic la programul Java la momentul
executării rolul lor fiind icircn principal de a mări viteza de execuţie pentru anumite secvenţe din
program
Observatie
Utilitarele javacexe si javaexe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java Asrfel programele Java ale caror surse se afla in subdirectorul bin vor putea fi compilate si
interpretate In aceste conditii insa se ajunge la supraincarcarea directorului bin iar gestiunea
programelor se va face foarte greu Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare
Setarea variabilei PATH se face astfel
Settings-gtControl Panel-gtSystem-gtAdvanced-gtEvironment Variables-gtSystem Variables-
gtPATH-gtEdit-gtse adauga calea catre subdirectorul bin De ex Cj2sdk142_10bin
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
37
Pentru a testa daca totul este configurat corespunzator se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac ndashhelp Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare lsquojavacrsquo is not recognized as an internal or external
command operable program or batch file)
Android
Figura Arhitectura sistemului Android OS3 [W41]
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
38
23 Septembrie 2008 - are loc lansarea lui Android 10
9 Februarie 2009 - apare Android 11 cu API schimbat prezentacircnd timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon arăta şi ascunde dialpad meniul de
apel suport pentru salvarea ataşamentelor din MMS (Multiple Messages)
9 Iulie 2012 - apare versiunea Android 411 (Jelly Bean) bazată pe Linux kernel 3031
Prezintă ca particularităţi notificări intuitive care permit o interacţiune mai amplă opţiunea de
auto redimensionare şi auto-aranjarea icoanelor pe ecran cu o posibilă poziţionare a unui
widget astfel icircncacirct acesta să poată fi accesat cat mai uşor un nou meniu de share un meniu
icircmbunătăţit pentru opţiunea open with (momentul icircn care mai mult de o aplicatie poate rula ceea
ce se doreşte să se deschidă) grafică uşor schimbată şi ceva mai luminoasă a sub-meniurilor
mici modificări icircn categoria Developer Options modificări la nivel de tranziţii (dupa fiecare
poză apare o tranziţie care permite icircntoarcerea icircn modul cameră) cea mai evidentă modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga prezenţa informaţiilor
despre ceas baterie şi semnal lista melodiilor poate fi accesată cu ajutorul pictogramei de sub
search icircmbunătăţirea considerabilă a vitezei sistemului de operare prin intermediul
modificărilor denumite generic ldquoProject Butterrdquo ceea ce permite ca partea grafică să ruleze tot
timpul la 60 de cadre pe secundă cu un suport de buffer triplu (acesta ajută sistemul de operare
să prezică ce urmează să faca utilizatorul icircn funcţie de poziţia degetelor pe ecran) un nou sistem
de răspuns sub forma unor carduri de răspuns care nu doar că afişează informaţia cerută dar o
şi expune vocal cu ajutorul asistentului icircn limba engleză Google Now icircnvaţă ldquocat mai multerdquo
despre utilizator şi caută să ofere informaţii personalizate icircn funcţie de nevoile fiecăruia trafic
vreme agendă călătorii bilete de avion programări etc
Figura Compilarea aplicaţiilor Java pentru Dalvik VM
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
39
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
40
TEMA Urgent de instalat OCTAVEamp QTOCTAVE
Instalare program OCTAVE amp QTOCTAVE
Pasi de urmat pentru OCTAVE 1 Accesati pagina httpoctavesourceforgenet
2 Localizati si accesati Windows Installer
3 Din pagina urmatoare descarcati fisierul numit Octave360_gcc462_201201297z acesta
contine programul OCTAVE si pachetul Octave-Forge
4 Pasii anteriori pot fi rezumati prin simpla accesare a acestui link
httpsourceforgenetprojectsoctavefilesOctave_Windows20-
20MinGWOctave2036020for20Windows20MinGW20installerOctave360_
gcc462_201201297zdownload descarcarea incepand automat in cateva secunde
Pasi de urmat pentru QTOCTAVE 1 Accesati pagina httpqtoctavewordpresscomdownload
2 Localizati si accesati link-ul pentru Windows
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
41
3 De pe pagina urmatoare accesati build for windows
4 Pasii anteriori pot fi rezumati prin simpla accesare a urmatorului link
descarcarea incepand automat httpwwwoutschorgwp-
contentuploads201101qtoctave-0101-win32zip
Rezolvare ultima parte Dupa descarcarea celor doua programe vom avea doua arhive una continand programul OCTAVE si una
continand programul QTOCTAVE
1 Dezarhivam programul OCTAVE si vom obtine un folder al acestuia
2 Dezarhivam programul QTOCTAVE si vom obtine alt folder
3 Putem crea un folder nou numindu-l simplu OCTAVE in care sa punem cele doua
foldere anterioare
4 Mutam de preferat folderul in Program Files
5 Identificam in folderul QTOCTAVE - bin executabila qtoctaveexe dam click dreapta
pe ea si alegem Send to Desktop
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
42
6 La accesarea programului QTOCTAVE de pe ecran la deschidere va aparea o eroare
Alegeti OK si lasati programul sa se lanseze
7 Dupa lansarea programului din bara de unelte de sus alegeti Configuration (Config
Configuracion) dupa caz si alegeti Configurari Generale
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Informatica aplicata-note de curs constructiicdsdgmailcom
httpwwwcdsdrocursurihtml
43
8 Apoi alegeti OCTAVE ndash Select ndash octaveexe din folderul bin al programului QTOctave
ndash Open ndash OK si reporniti programul
Anexa Distinct English terms are used httpwwwtechno-sciencenetonglet=glossaireampdefinition=162
Informatics (information science) what emerges from the study of systems biological or artificial that store process and communicate information This includes the study of neural systems as well as computer systems
Computer Science (Theoretical Computer) this follows from the procedural epistemology or the study of such algorithms and thus indirectly of software and computers
Computer Engineering (Computer Engineering) what emerges from the manufacture and use of computer hardware
Software Engineering (Software Engineering) what emerges from the modeling and development of software this includes two aspects data and processing and the two are related in the implementation of the data processing ( Data Processing ) In France in practice the term software engineering rather corresponds to software engineering or engineering software
Information Technology Engineering (Engineering Information Technology) what emerges from the integration of techniques and technologies relating to information and computer-related as well as the internet (eg e- business)
Information Technology (Information Technology) Represents the evolution of techniques and technologies related to information technology
Professions as diverse as designer analyst developer operations manager engineer system
maintenance technician hardware or software researcher in computer science or director of a
computing center are in the field of computing However the term computer means more often
those who design deploy and implement solutions
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune
Noţiuni fundamentale
________________________________________________________________
44
Probleme organizatorice Disciplina Informatica aplicata
Colectiv de cadre didactice
ConfUnivDrIngEugen Petac ndash curs
AsistUnivDr Cristina Serban ndash grupe laborator
Observatii Materiale in format electronic httpwwwcdsdro sectiunea cursuri informaacutetica
aplicata
Caiet(dosar) ndash laboratorcurs
Colocviu Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 05 Punctaj test grila (PTG)
+03 Punctaj activitate laborator (PAL) (prezenta activa rezolvare teme etc)+02 Punctaj
evaluare la laborator(PVL)
Organizare test grila Saptamana a 13-a Luni 05 ianuarie 2015 ora 1600 sala A0
Conform programarii de mai sus la Testul grila participa numai studentii din seria
respectiva care au sustinut activitatea la laborator conform programarii pe parcursul
semestrului I
Reamintim ca prezenta la activitatile didactice este obligatorie Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii dupa
sesiune