C_01

44
Informatica aplicata-note de curs [email protected] http://www.cdsd.ro/cursuri.html 1 Noţiuni fundamentale 1.1. Definiţii Informaţia reprezintă un mesaj (de orice natură) care aduce o precizare într-o problemă ce comportă un anumit grad de incertitudine. Boar B.H., The Art of Strategic Planning for Information Technologies, 2nd edition, John W iley, 2001 Există două aspecte ale informaţiei: 1. Semantic se referă la înţelegerea informaţiei ca idee, cunoaştere, mesaj, care se transmite pe anumite medii fizice sau biologice, numite suporturi de informaţie; 2. Sintactic precizează modul de prezentare a informaţiei. O mulţime este informaţională dacă elementele sale sunt informaţii. Ea se poate defini în: 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ă în care se află informaţia ca element; 2. Forma de reprezentare (face posibilă deosebirea informaţiilor între 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 înregistrate în memoria calculatorului şi prelucrate de acesta, sau transmise pe o linie de comunicaţie.

description

.

Transcript of C_01

Page 1: 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

Page 2: C_01

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

Page 3: C_01

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

Page 4: C_01

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

Page 5: C_01

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

Page 6: C_01

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

Page 7: C_01

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

Page 8: C_01

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

Page 9: C_01

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

Page 10: C_01

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

Page 11: C_01

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

Page 12: C_01

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

Page 13: C_01

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

Page 14: C_01

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

Page 15: C_01

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

Page 16: C_01

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

Page 17: C_01

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

Page 18: C_01

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

Page 19: C_01

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

Page 20: C_01

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

Page 21: C_01

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

Page 22: C_01

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

Page 23: C_01

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

Page 24: C_01

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

Page 25: C_01

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

Page 26: C_01

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

Page 27: C_01

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

Page 28: C_01

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

Page 29: C_01

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

Page 30: C_01

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

Page 31: C_01

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

Page 32: C_01

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

Page 33: C_01

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

Page 34: C_01

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

Page 35: C_01

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

Page 36: C_01

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

Page 37: C_01

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

Page 38: C_01

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

Page 39: C_01

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

Page 40: C_01

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

Page 41: C_01

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

Page 42: C_01

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

Page 43: C_01

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

Page 44: C_01

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