Proiectarea Si Implementarea Unei Aplicatii Messenger Multilingva

Proiectarea și implementarea unei aplicații messenger multilingvă

Tema aleasă pentru lucrarea de licență este realizarea unei aplicații de messenger,

care face posibiliă comunicarea cu persoane care vorbesc o limbă diferită. Aplicația este scrisă în programul Java, ceea ce este o limbă de programare foarte cunoscută. Messenger-ul a fost conceput pe baza arhitecturii client-server. Modelul client-server este o arhitectură aplicație distribuită care prelucrează datele între server și clienți. Comunicarea între clienții și serverele se realizează prin rețele de calculatoare.

Lucrarea mea este împărțită în patru mari capitole, iar la rândul lor fiecare capitol este împărțit în mai multe subcapitole.

Al doilea capitol conține noțiuni introductive despre elementele esențiale a programării.

Al treilea capitol prezintă tehnologiile și programele folosite, care au fost necesare în crearea messenger-ului.

Al patrulea capitol conține proiectarea și implementarea programului. În acest capitol am prezentat mai multe diagrame UML importante și câteva secvențe din cod.

În al cincilea capitol am prezentat utilizarea messenger-ului.

În ultimul rând am afișat concluziile și o listă cu bibliografia.

2. Programare. Fundamente Teoretice

2.1 Introducere în programare

Programele de calculator, cunoscute și sub numele de software, sunt constituite dintr-o serie de instrucțiuni pe care le execută calculatorul. Când creați un program, trebuie să specificați instrucțiunile pe care calculatorul trebuie să le execute pentru a realiza operațiile dorite. Procesul de definire a instrucțiunilor pe care le execută calculatorul este numit programare.

Instrucțiunile pe care le execută un calculator sunt de fapt grupuri de 1 și 0 (cifre binare) care reprezintă semnale electronice produse în interiorul calculatorului. Pentru a programa primele calculatoare (în anii 1940-1950), programatorii trebuiau să înțeleagă modul în care calculatorul interpreta diferitele combinații de 0 și 1, deoarece programatorii scriau toate programele folosind cifre binare. Cum programele deveneau din ce în ce mai mari, acest mod de lucru a devenit foarte incomod pentru programatori. De aceea cercetătorii au creat limbaje de programare care permit exprimarea instrucțiunilor calculatorului într-o formă mai accesibilă omului.

2.2 Programare orientată pe obiecte

Programarea Orientată pe Obiecte este o paradigmă de programare care utilizează obiecte și interacțiuni între acestea pentru a modela arhitectura unui program.

… TODO…

3. Tehnologii și aplicații folosite

3.1 Java. Caracteristicile limbajului.

Java este un limbaj de programare orientat pe obiecte. Începutul limbajului Java este în toamna anului 1991, când firma Sun Microsystems (acum filială Oracle) a finanțat un proiect cu numele Green condus de James Gosling.

Caracteristicile limbajului Java sunt:

este un limbaj compilat și interpretat. Un limbaj este compilat dacă un program scris în acel limbaj de programare este tradus într-un cod pe care calculatorul îl poate executa mult mai ușor. Un limbaj este interpretat dacă instrucțiunile unui program scris în acel limbaj de programare sunt procesate linie cu linie.

este un limbaj independent de platformă. La instalarea limbajului Java, se va crea o mașină virtuală Java care are drept scop traducerea instrucțiunilor unui byte code Java în instrucțiuni-mașină pentru platformă curentă. Astfel fișierele pot fi copiate și executate pe orice platformă.

este un limbaj orientat pe obiecte. Este o proprietate importantă a limbajului Java. Java pune în evidență toate aspectele legate de programare orientată pe obiecte, adică: obiecte, trimitere de parametri, încapsulare, clase, biblioteci, moștenire și modificatori de acces.

este un limbaj concurent. Concurența (multithreading) înseamnă capacitatea unui program de a executa mai multe secvențe de cod în același timp. O secvență de cod în Java se numește fir de execuție (thread).

este un limbaj distribuit. Java este distribuit, deoarece permite utilizarea obiectelor locale și de la distanța. Java respectă standardul IEEE (Institute of Electrical and Electronics Engineers) pentru structurile de date, cum ar fi folosirea întregilor, a numerelor în virgulă flotantă și a șirurilor de caractere. Java se poate utiliza în aplicații de rețea, deoarece respectă protocolele de rețea, cum ar fi FTP, HTTP, SOAP etc.

este un limbaj performant. Având posibilitatea să lucreze cu fire de execuție multiple este capabil să execute un byte code aproape la fel de repede ca pe un cod compilat. Un program Java poate aștepte citirea unor date, în timp ce un alt fir de execuție poate aloca sau elibera memoria necesară programului.

este un limbaj dinamic și robust. Java întârzie alocarea obiectelor și legarea dinamică a claselor până la momentul execuției. Astfel, se vor evita erorile de alocare chiar dacă mediul s-a schimbat de la ultima compilare a programului. Este un limbaj robust deoarce a fost eliminată utiliziarea pointerilor, care era generatoare de erori în alte limbaje de programare. Java verifică memoria dinamic înainte de a fi alocată.

este un limbaj sigur. Java nu folosește pointeri și alocă memorie doar la execuție, programele java nu pot accesa memoria heap, stack sau alte secțiuni protejate de memorie. Înainte de a executa programul Java, se verifică dacă este un cod Java valid prin cercetarea accesului la date.

Limbajul Java se poate instala pe calculatoare cu diverse sisteme de operare, cum ar fi Windows, Linux. Acest lucru este posibil, deoarece un program java nu se execută direct de către microprocesor, ci utilizează o mașină virtuală (Java Virtual Machine – JVM).

Pentru crearea și editarea programelor Java se poate utiliza orice editor obișnuit de texte, însă este recomandată utilizarea unui mediu specializat întrucât acestea reduc semnificativ timpul de dezvoltare a aplicațiilor. Cele mai importante medii de programare pentru Java este Eclipse sau NetBeans.

3.2Eclipse

Dezvoltarea de aplicații complexe Java care de obicei conțin mai multe fișiere sursă poate deveni foarte dificilă în condițiile utilizării unui editor text simplu. În aceste condiții programatorul va trebui să își aleagă și să își instaleze o aplicație care să îl ajute în dezvoltarea aplicațiilor. O astfel de aplicație poartă numele de IDE (Integrated Development Environment).

Un mediu de dezvoltare (IDE) este un set de programe care ajută programatorul în scrierea de alte programe. Un mediu de dezvoltare combină toți pașii necesari creării unui program (ex.: editarea cod sursa, compilare, rulare, depanare) într-un singur soft, care, de regulă, oferă o interfață cu utilizatorul grafică, prietenoasă.

Eclipse este un mediu de dezvoltare open-source scris preponderent în Java. Acesta poate fi folosit pentru a dezvolta aplicații Java. De dezvoltarea sa se ocupă Fundația Eclipse. Eclipse contine un nucleu central care cuprinde o mașină virtuală și un set de funcționalități de bază, la care se pot adăuga apoi diverse unelte de dezvoltare sub forma unor plugin-uri.

Mediul de dezvoltare pentru Java este prezentată în figura 01.

3.3XAMPP

Xampp este un pachet de software și open source cross-platform(rulare identică pe platforme diferite) folosit pentru a crea în local pagini web dinamice. Pachetul constând în principal din server de web Apache, server de baze de date MySQL, interpretează scripturi scrise în limbajele PHP și PERL. Pentru a putea fi folosit pe servere, după instalarea pachetului de aplicații trebuie operate unele configurări, mai ales pentru pentru o mai bunăsecuritate.

XAMPP a fost creat însă și pentru a pune la dispoziția dezvoltatorilor un instrument eficient de testare. Odată instalat pe calculatorul propriu, pachetul de aplicații va face ca acesta să aibă comportamentul unui server conectat la Internet, permițând testarea aplicațiilor scrise înainte de a le copia pe serverul firmei care va găzdui în final produsul software realizat.

Caracteristicile principale sunt:

este un server web pentru a folosi în local sau a găzdui site-uri web;

instalează Apache, MySQL, PHP, Perl, phpMyAdmin, FileZilla FTP Server, etc.;

este stabil, siguri, rapid și eficient;

are o interfață simplă și intuitivă;

este o aplicație ușor de folosit;

Interfața XAMPP este prezentată în figura 02.

3.4Baze de date

O bază de date este o colecție de date, creată și menținută computerizat, în scopul prelucrării datelor în contextul unui set de aplicații. Prelucrarea datelor se referă la operațiile de culegerea, memorarea, organizarea, regăsirea, prelucrarea și administrarea unui volum mare de date.

Arhitectura unei baze de date reprezintă modul de organizare a datelor, între calculator care operează asupra datelor sub formă de biți și utilizatorul unei baze de date. Caracteristic arhitecturii unei baze de date sunt nivelele de independență și de abstractizare a datelor.

Asigurarea independenței datelor în cadrul bazelor de date impune adoptarea unei arhitecturi organizate pe cel puțin trei nivele. În funcție de nivelul de abstractizare se deosebesc, figura 03 reprezintă arhitectura unei baze de date:

nivelul intern (baza de date fizică);

nivelul coneptual (modelul conceptual sau schema conceptuală);

nivelul extern (modelul extern, subschemă, vedere).

Nivelul intern sau baza de date fizică este o colecție de fișiere conținând datele fizice, la care se adaugă diverse structuri auxiliare menite să asigure accesul operativ la aceste date. Baza de date fizică este rezidentă în memoria permanentă a calculatorului. Modul de organizare al bazei de date fizice depinde de configurația echipamentelor hardware care suportă baza de date și de sistemul de operare.

Modelul coneptual este o abstractizare a unei părți din lumea reală și constă din descrierea structurii logice a datelor în baza de date. Fiecare bază de date are un model conceptual propriu prin care sunt numite și descrise toate unitățile logice și legăturile dintre acestea. Modelul conceptual integrează viziunile tuturor utilizatorilor asupra datelor și specifică ce anume poate face parte din baza de date și ce nu poate fi memorat în baza de date.

Modelul extern poate fi privit ca o descriere a unei baze de date, corespunzătoare fiecărui utilizator în parte. Modelul extern cuprinde o parte a unităților logice din modelul conceptual, la care se adaugă un număr de unități virtuale care nu au corespondent în baza de date fizică.

La nivel extern se definește conceptul de vedere, ca o viziune individualizată și simplificată asupra bazei de date, corespunzătoare unui anumit utilizator sau grup de utilizatori.

În cadrul unei baze de date, trecerea de la un nivel la altul se realizează cu ajutorul transformărilor care definesc interfața între două nivele succesive.

Un sistem de gestionare a bazelor de date (SGBD) este un software specializat în stocarea și prelucrarea unui volum mare de date. Pentru a-și realiza obiectivul, un SGBD folosește toate nivelele de abstractizare ale bazei de date și toate interfețele dintre acestea.

Cele mai importante avantaje sunt:

Reducerea redundanței datelor memorate dacă fiecare aplicație lucrează cu fișiere proprii este posibil ca aceleași date să apară de mai multe ori în fișiere diferite;

Evitarea incosistenței datelor adică duplicarea datelor în fișiere diferite poate crea

probleme la actualizare;

Partajarea datelor, deoarece mai multe aplicații utilizează același fișier de date.

Introducerea standardelor oferă posibilitatea transferului datelor de la o bază de date la alta.

Menținerea integrității datelor, datele se consideră corecte dacă ele sunt consistente și validate prin proceduri specifice aplicației.

3.3.1 MySQL

MySQL este un sistem de gestiune a bazelor de date relaționale foarte rapid și robust. O bază de date va permite să stocați, să cautați, să sortați și să regăsiți datele în mod eficient. Serverul MySQL controlează accesul la datele dumneavoastră pentru a garanta că mai mulți utilizatori pot lucra simultan cu acestea, pentru a oferi un acces rapid la ele și pentru a garanta faptul că au acces la ele doar utilizatorii autorizați. Deci, MySQL este un server multiuser (mai mulți utilizatori) și multithread (mai multe fire de execuție).

Utilizează SQL (Structured Query Language), limbajul standard de interogare a bazelor de date din toată lumea. Este limbajul standard pentru accesarea sistemelor de gestiune a bazelor de date realaționale (SGBDR) adică arhitectura client-server, figura 04 reprezintă arhitectura client-server. Este utilizat în sisteme de baze de date cum sunt MySQL, Oracle, Microsoft SQL Server, etc.

O mașină care dorește să proceseze interogări asupra bazelor de date MySQL trebuie să ruleze un server MySQL. Serverul MySQL ”ascultă” posibilele cereri de conexiune ale clienților pe portul implicit 3306. Prin client MySQL se înțelege orice aplicație capabilă să trimită interogări serverului MySQL.

MySQL este disponibil în public din 1996, dar istoria dezvoltării sale începe în 1979.

MySQL este disponibil sub o schemă duală de licență. Puteți să-l utilizați gratuit, sub o licență Open Source, atât timp cât vă încadrați în termenii acestei licențe. Dacă doriți să distribuiți o aplicație non-GPL care conține MySQL, atunci puteți cumpăra o licență comercială.

MySQL are multe puncte forte, printre care:

Performanță ridicată, adică MySQL este foarte rapid;

Cost scăzut, este disponibil gratuit sub o licență Open Source sau la un preț mic sub o licență comercială dacă aceasta este necesară pentru aplicația;

Ușurință în configurare și învățare, majoritatea bazelor de date moderne utilizează SQL. Deasemnea, MySQL este mai ușor de configurat decât multe produse asemănătoare;

Portabilitate, MySQL poate fi folosit pe multe sisteme de operare;

Disponibilitatea codului sursă, se poate modifica la codul sursă al bazei de date.

Există numeroase interfețe de acces la bazele de date MySQL din diverse limbaje și medii de programare. Între acestea amintim aplicația phpMyAdmin, care poate fi Putem utiliza cu mare eficiența și ușurința această aplicație, pentru gestionarea bazelor de date, a tabelelor și a drepturilor de acces, dar și pentru execuția instrucțiunilor SQL. Programatorul își poatecrea propriile interfețe de acces la bazele de date MySQL.

3.5 XML

De la introducerea sa în 1998, Extensible Markup Language (XML) a revoluționat modul în care gândim structurarea, descrierea și schimbul de informații. Modurile în care XML este utilizat în industria software sunt multe și în continuă creștere. În mod sigur, pentru serviciile Web, importanța XML este imensă, toate tehnologiile cheie de servicii Web se bazează pe acesta.

Word Wide Web Consortium (W3C) a început lucrul la Extensible Markup Language (XML) la jumătatea lui 1996. XML 1.0 lansat pe 10 februarie 1998, rezultat din nevoia industriei de computere de a dezvolta un mecanism simplu, dar extensibil pentru reprezenarea textuală a informației structurate și semistructurate.

XML este un simplu format de fișier care conține date. Ceea ce îi conferă un caracter deosebit este faptul că reprezintă un standard larg adoptat, care poate exista pe orice platformă și care este utilizat de un număr masiv și în continuă creștere de aplicații și limbaje de programare. De fapt, este susținut de unele dintre cele mai mari și mai puternice companii din industria calculatoarelor. Companii importante, cum ar fi Microsoft, SUN Microsystems și IBM, au adoptat și încorporat această tehnologie în produsele lor, prin aceasta asigurând viitorul succes al acesteia.

XML este numit ”extensibil”, deoarece nu este un limbaj fix, ca HTML, care are un singur set de etichete predefinite. De fapt, XML este un metalimbaj, care permite conceperea propriului limbaj de marcare personalizat, prin aceasta oferind posibilitatea de a concepe și structura într-un mod personalizat documentele XML, pentru aplicații specifice.

În limbajul XML se pot crea etichete cu orice nume, cu alte cuvinte, autorul decide care este structura de atribuire a denumirilor. Aceste nume sunt utilizate pentru a clasifica și a descrie datele. De exemplu:

<messenger_id>

sau

<first_name>

Aceste etichete personalizate sunt utilizate pentru a crea propria structură de date, specifică conținutului respectiv. Din aceste exemple se poate vedea cât de lizibil poate fi limbajul XML și cât de natural este pentru realizatori, proiectanți și producători. Nu există etichete obscure care trebuie memorate, ca în HTML. Singurele etichete care vor fi utilizate sunt cele pe care le-ați creat dumneavoastră. XML tratează doar informații, astfel încăt permite gândirea conceptuală atunci când se lucrează cu el.

Vorbind la modul general, există două arii largi de aplicație pentru tehnologiiel XML. Prima se referă la aplicațiile centrate pe document, iar cea de-a doua la aplicațiile centrate pe date.

XML a obținut o acceptare rapidă în interiorul sistemelor de publicare, ca mecanism pentru reprezentarea documentelor semistructurare, cum ar fi manualele tehnice, documentele legale și calatoagele de produse. Conținutul acestor documente este destinat în mod tipic utilizării umane, deși ar putea fi procesat de orice număr de aplicații înainte de a fi prezentat oamenilor. Elementul cheie al acestor documente este textul marcat, semistructurat.

Prin contrast, XML centrat pe date este utilizat pentru a marca informație înalt structurată, cum ar fi reprezentarea textuală a datelor relaționale din bazele de date, informațiile despre tranzacții financiare și structurile de date ale limbajelor de programare. Abilitatea naturală a XML de a imbrica și repeta marcaje este cea care îl face alegerea perfectă pentru reprezentarea acestor tipuri de date.

Utilizările centrate pe date și document ale XML pot diferi sub încă un aspect important – durata de viață a unui document XML. Tipic, documentele XML pentru utilizare umană cum ar fi manualele tehnice sau lucrările de cercetare au o viață lungă deoarece informația conținută în acestea poate fi utilizată pentru o perioadă lungă de timp. Pe de altă parte, există XML centrat pe date care trăiește doar câteva milisecunde. De exemplu o bază de dată care returnează rezultatul unei interogări în format XML. Întreagă operație durează câteva milisecunde.

3.6UML

Limbajul de modelare (UML – The Unified Modeling Language) oferăarhitecturi de sisteme ce funcționează pe analiza și proiectarea obiectelor cu un limbaj corespunzător pentru specificarea, vizualizarea, construirea și documentarea software și de asemenea pentru modelarea în întreprinderi. UML este un limbaj de modelare care oferă o exprimare grafică a structurii și comportamentului software. Pentru această exprimare grafica se utilizează notațiile UML.

Notațiile UML constituie un element esențial al limbajului pentru realizarea propriu-zisă a modelării și anume partea reprezentării grafice pe care se bazează orice limbaj demodelare. Modelarea în acest limbaj se realizează prin combinarea notațiilor UML în cadrul elementelor principale ale acestora denumite diagrame.

În cadrul limbajului UML descoperim 9 tipuri de diagrame:

diagrama de clase;

diagrama de componente;

diagrama de construcție;

diagrama de obiecte;

diagrama de activități;

diagrama de stări;

diagrama cazurilor de utilizare;

diagrama de secvență;

Analiza unei aplicații implică realizarea mai multor categorii de modele, dintre care

cele mai importante sunt:

Diagrame de structură:

Evidențiază componentele ce trebuie să existe în cadrul sistemului modelat; sunt în general folosite pentru documentarea arhitecturii sistemelor software.

Diagrama de clasa,prezintă structura statică în termeni de clase și asocieri (relații); diagramele de clase sunt grafuri, având ca noduri în general clase, dar putând conține și pachete, interfețe sau chiar obiecte, iar ca arce relațiile dintre aceste elemente.

Diagrama de componente,prezintă componentele fizice ale unei aplicații; componentele pot fi executabile, biblioteci dinamice, tabele, fișiere de cod sursă, fișiere de date, documente, elemente din modele orientate pe obiecte clasice;

Diagrama de constructiveprezintă construcția componentelor pe dispozitivele hardware; acestea sunt grafuri de noduri, în interiorul cărora se reprezintă instanțe ale componentelor, rezidente la momentul rulării;

Diagrama de obiecte prezintă obiectele si relațiile lor, fiind niște diagrame de colaborare simplificate, fără reprezentarea mesajelor trimise între obiecte;

Diagrame de comportament:

Evidențiază ce trebuie să se întâmple în sistemul modelat; ilustrează comportamentul sistemului și sunt utilizate în general pentru a descrie funcționalitatea sa.

Diagrama de activitate,reprezintă comportamentul unei operații în termeni de acțiuni; ele sunt cazuri particulare ale diagramelor de stare, care nu descriu însa un flux de control bazat pe evenimente, ci un procedural, în care toate sau majoritatea tranzițiilor se efectuează automat, la terminarea acțiunilor efectuate în interiorul stărilor;

Diagrama de stareprezintă comportamentul unei clase în termeni de stări; diagramele de stări au la bază două concepte importante: stările, ce caracterizează valori sau seturi de valori ale obiectelor, și evenimentele, ce constau din stimuli externi, ce acționează asupra obiectelor și determină o tranziție de la o stare la alta;

Diagrama cazurilor de utilizare, prezintă funcțiile sistemului din punct de vedere al utilizatorului; acestea sunt grafuri de actori și cazuri de utilizare, având ca arce relațiile dintre ele.

Diagrame de interacțiune:

Diagramele de interacțiune reprezintă diagrame de comportament care evidențiază modul în care circulă datele și se transferă controlul în sistemul modelat.

Diagrama de secvență,prezintă temporal obiectele si interacțiunile lor;

Relațiile care se stabilesc între două elemente din cadrul unei diagrame pot fi:

actor–funcționalitate –> relație de asociere;

actor–actor –> relație de generalizare;

funcționalitate–funcționalitate -> relație de asociere, de generalizare și de dependență.

Relația de asociere – modelează o comunicare între elementele pe care leconectează. Aceste tip de relație apare între un actor și o funcționalitatea sau între două funcționalități (transfer de date, trimitere de mesaje sau date).

Relația de generalizare – se realizează între elemente de același tip și modelează situații în care un element este un caz particular al unui alt element. Elementul particular moștenește relațiile în care este implicat elementul general.

Relația de dependență – apare între două funcționalități și modelează situații în care o funcționalitate folosește comportamentul definit în altă funcționalitate (include) sau în cazul în care comportamentul unei funcționalități poate fi extins către o altă funcționalitate.

3.7 Microsoft Translator API

Microsoft Translator API este un serviciu de nor de traducere automată careconține mai multe limbi peste 95% din lume. Microsoft Translator API poate fi folosit pentru a dezvolta aplicații,web site-uri și instrumente, sau orice soluție care necesită un sprijin multilingvă.

MicrosoftTranslatoresteosoluție dovedită,scalabilăși personalizabilăpentru otraducere automată. Se poateintegratraducerea înweb, desktopsauaplicații mobile, MS TranslatorAPIoferăo funcționalitatebogatăpentruorice dezvoltator, areogamă largădeinterfețe: AJAX, HTTP, SOAP, ODatași traducătorWebWidget. Figura 05 reprezintă un sistem de traducere automată.

Sisteme de traducere automată, sunt aplicații sau servicii online care utilizează tehnologia “machine-learning” pentru a traduce o cantitate mare de text la și de la oricare dintre limbile lor acceptate. Deși conceptul și interfețele pentru utilizarea acestor sisteme sunt relativ simple, știința și tehnologia în spatele lor sunt extrem de complexe și aduc împreună mai multe tehnologii de vârf, cum ar fi machine-learning, big data, lingvistică, cloud computing șiweb API-uri.

Serviciultraduceo"sursă" de text dintr-olimbăîntr-oaltălimbă"țintă". Micrisift Translator web service poate fi utilizat în web sau aplicații pentru clienți pe orice platformă și orice sistem de operare pentru a dezvolta traducerea limbii și alte operațiuni legate de limbă, ca și detectarea limbii, text to speech sau dicționar.

4. Bibliografie

Dr. Kris Jamsa & Lars Klander, Traducere de Eugen Dumitrescu, Totul despre C și C++ Manualul fundamental de programare în C și C++, Editura Teora, București, 2007

Ștefan Tanasă & Ștefan Andrei, Cristian Olaru, Java de la 0 la expert Ediția a II-a, Editura Polirom, 2011

Luke Welling & Laura Thomson, Traducere de Ioan Bledea, Dezvoltarea aplicațiilor Web cu PHP și MySQL, Ediția a II-a, Editura Teora, București, 2005

Craig Swann & Greg Caines, Traducere de Simona Preda & Titi Preda, XML în FLASH, Editura Teora, București, 2002

Steve Graham & Simeon Simeonov & Toufic Boubez & Doug Davis & Glen Daniels & Yuichi Nakamura & Ryo Neyama, Traducere de Tiberiu Ionescu, Servicii Web cu JavaTM XML, SOAP, WSDL și UDDI, Editura Teora, București, 2003

Vasile Topac, Ingineria Sistemelor de Programare, Note de curs, 2015

Vasile Topac, Programarea Sistemelor Automate Distribuite, Note de curs, 2015

Cristina Băla, Tehnologii Web, Note de curs, 2015

Mariana Nagy, Mihaiela Vizental, Baze de Date, Material de studiu pentru învățământ la distanță, Editura Universității Aurel Vlaicu, Arad, 2010

https://www.microsoft.com/translator/api.aspx

https://code.google.com/p/microsoft-translator-java-api/

Similar Posts