Sunteți pe pagina 1din 67

Platformă de e‐learning și curriculă

gș e‐content 
pentru învățământul superior tehnic

 Instrumente pentru Dezvoltarea Programelor
p g

5 Integrated Development Environments (IDE)


5. Integrated
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Integrated Development Environments 
(IDEs)

Duct tape is like the Force.


It has a light side,
side a dark side,
side
and it holds the universe together.
(Carl Zwanzig)

IDP – Instrumente pentru Dezvoltarea Programelor 2
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Integrated Development Environments (IDEs)
 IDE = workbench 
IDE = workbench ‐ un set coerent de instrumente CASE 
un set coerent de instrumente CASE
proiectat pentru a suporta activităţi software
Oracle Designer
Microsoft’s Visual Studio .NET
Eclipse

 Furnizează o interfaţă unică utilizatorului către mai
ţ multe
instrumente CASE
 Common UI: toate instrumentele pot fi invocate din şi pot 
afişa rezultatele în acelaşi IDE
IDP – Instrumente pentru Dezvoltarea Programelor 3
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

I t
Integrated Development Environments
t dD l tE i t
 Extensibilitate: arhitecturi bazate pe plug‐in‐uri
Plug‐in: componentă program ce poate fi integrată (“plugged”) 
în sistem
De obicei are propriile ferestre de comunicare
De obicei are propriile ferestre de comunicare
 Un IDE furnizează de obicei resurse comune tuturor 
instrumentelor integrate (ex acces la codul sursă
instrumentelor integrate (ex. acces la codul sursă, 
modele interne, …)
 Avantaje şi dezavantaje
Avantaje şi dezavantaje
Integrează diverse instrumente ce asistă tot parcursul 
procesului software
Fiecare IDE este diferit şi necesită învăţare şi cunoştinţe 
IDP – Instrumente pentru Dezvoltarea Programelor 4
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Integrarea instrumentelor
 Workbenchurile integrează mai multe instrumente în acelaşi UI
Editoare text
Compilatoare
Depanatoarea (execuţia & verificarea programului pas cu pas)
Profilere (măsurarea & verificarea timpului petrecut în execuţia unor 
secvenţe de cod)
secvenţe de cod)
Diverse alte editoare (e.g. pentru diagrame)
Diverse alte instrumente (constructie, generearea/transformarea codului, 
…)
 Valoare dată de integrarea funcţională
Comunicaţie între instrumente, e.g.
Editor text cu senzitivitate la elementele constructive ale limbajului
j
(syntax sensitivity, auto‐completion)
Lista de erori de compilare cu navigare în codul sursă
Depanator integrat cu editorul text
 Extensibilitate: arhitectura de tip plug‐in şi interfaţa cu 
instrumente consolă
IDP – Instrumente pentru Dezvoltarea Programelor 5
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Vederi multiple
Vederi multiple
 IDE‐urile furnizează un UI workspace conţinând câteva paneluri ce prezintă 
diverse informaţii de interes pentru utilizator
 Task
Task‐uri
uri diferite beneficiază de vederei
diferite beneficiază de vederei diferite asupra unor elemente
diferite asupra unor elemente
 Idea: furnizarea aceleiaşi (sau măcar similare) informaţii în diferite paneluri 
(sincronizate), folosind diverse reprezentări
 Exemplu: lucrul cu un GUI
p
Diagrama de clase arată relaţiile statice dintre controale
Ierarhia de conţinut prezintă structura la runtime a GUI‐ului
Editorul vizual arată proiectul grafic (layout, culori, …)
Codul cursă prezintă specificaţia comportamentului dinamic
d l ă i ă ifi i l i di i

b.addActionListener(new ActionListener() {
void actionPerformed(ActionEvent e) {
System.out.println("Hello!");
} });
IDP – Instrumente pentru Dezvoltarea Programelor 6
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Reprezentare structurată a codului sursă


Reprezentare structurată a codului sursă
 Multe instrumente folosesc o reprezentare textuală a codului sursă
Eliminarea detaliilor lexicale ne‐necesare; predispuse la erori pentru că depind de 
fiecare singur caracter (“untyped”)
Lineare, deci greu de procesat (necesită folosirea unui parser) şi inflexibile
 Idea: folosirea de reprezentări structurate, orientate spre tipuri de AST pentru 
codul sursă
 Multe IDE‐uri moderne folosesc intern o astfel de abordare
Codul sursă este parsat (adesea chiar în timp ce dezvoltatorul tastează) şi stocat ca 
un AST
AST‐ul
AST l este folosit pentru navigaţie, editare, transformări, analize
t f l it t i ţi dit t f ăi li
 Reprezentarea structurată permite adăugarea de noi funcţionalităţi
Regăsire rapidă: căutare, agregare
Editarea verificată (prevenţia inerentă a erorilor de sintaxă)
= Var int
int x = 0;
Program
g 0
x++;
++
x
++
IDP – Instrumente pentru Dezvoltarea Programelor 7
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Integrated Development Environments


Integrated Development Environments

IDP – Instrumente pentru Dezvoltarea Programelor 8
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Dezvoltare GUI

IDP – Instrumente pentru Dezvoltarea Programelor 9
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Dezvoltare grafică…
l f ă

IDP – Instrumente pentru Dezvoltarea Programelor 10
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

De ce prezentarea a două IDE?


De ce prezentarea a două IDE?
 Alegerea unui IDE – probleme Personale/Religioase
Unii oameni iubesc/urăsc Microsoft
Unii oameni iubesc/urăsc Java
Unii oameni iubesc/urăsc
Unii oameni iubesc/urăsc Eclipse/Visual Studio
Unii oameni iubesc/urăsc “open source”

 Dacă vorbim cu utilizatorii de Visual Studio:
Aveţi grijă la referirile la “Java” şi “Open Source”
•Java = încet, cu multe probleme
•Open Source = bug‐uri, fără suport
O S b i fă ă t
Pentru ei Eclipse nu reprezintă centrul universului

 Propria experienţă contează
Propria experienţă contează
Clientul are întotdeauna dreptate
Nu vă feriţi să semnalaţi posibile probleme pe care le vedeţi – mai târziu vă veţi mulţumi
Nu vă feriţi de a vă arăta nelămuririle legate de o soluţie impusă ‐ “Arată‐mi cum fac asta în 
Vi l St di ”
Visual Studio…”
Întotdeauna veniţi cu propriile soluţii la probleme întâlnite, ceilalţi vor aprecia

IDP – Instrumente pentru Dezvoltarea Programelor 11
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Visual Studio

IDP – Instrumente pentru Dezvoltarea Programelor 12
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Vi l S di
Visual Studio

 Scurtă istorie:
Visual Studio 97 (1997)
Visual Studio 97 (1997)
Visual Studio 6 (1998)
Visual Studio.NET (2002)
Visual Studio.NET 2003
Visual Studio 2005
Visual Studio 2008

IDP – Instrumente pentru Dezvoltarea Programelor 13
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

(Câteva)  Caracteristici

 Class Browser
 Rich Debug Info
 Desktop Integration
 Scripting
S i i
 System Search
 Flexible Projects
Flexible Projects

IDP – Instrumente pentru Dezvoltarea Programelor 14
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Caracteristici
i i i
 Class Browser
 Rich Debug Info
 Desktop Integration
 Scripting
 System Search
 Flexible Projects
Flexible Projects

IDP – Instrumente pentru Dezvoltarea Programelor 15
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Caracteristici
i i i

 Class Browser
 Rich Debug Info
 Desktop Integration
 Scripting
S i i
 System Search
 Flexible Projects
Flexible Projects

IDP – Instrumente pentru Dezvoltarea Programelor 16
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Caracteristici
i i i

 Class Browser
 Rich Debug Info
 Desktop Integration
 Scripting
S i i
 System Search
 Flexible Projects
Flexible Projects

IDP – Instrumente pentru Dezvoltarea Programelor 17
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Eclipse

IDP – Instrumente pentru Dezvoltarea Programelor 18
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Caracteristici
i i i
 Platformă universală, open‐source, ce integrează diverse instrumente de 
dezvoltare a aplicaţiilor
dezvoltare a aplicaţiilor
 Independenţă de limbajul de dezvoltare şi mediu de operare
Diverse tipuri de conţinut
HTML, Java, C, JSP, EJB, XML, GIF, …
 Facilitează integrarea uşoară de diverse instrumente
Instrumentele pot avea acces la diverse funcţii de bază ale platformei
p ţ p
Se pot adăuga noi instrumente la produsele deja instalate
 Comunitate mare de dezvoltatori
Include companii comerciale dezvoltatoare de software (IBM leader)
Include companii comerciale dezvoltatoare de software (IBM leader)
Se bazează pe popularitatea de care se bucură Java în rândul dezvoltatorilor de 
aplicaţii

IDP – Instrumente pentru Dezvoltarea Programelor 19
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Elemente Eclipse
Elemente Eclipse
 Workbench (Fereastra Eclipse) conţine paneluri
Editoare: un tip particular de fişier poate fi editat
Vederi: furnizează reprezentări alternative şi ajută la navigare
O vedere se deschide cu Window ‐> Show View sau ca “Fastview”
 Paneluri sunt grupate în areas (zone)
Zonele pot fi minimizate/maximizate
Zonele pot fi suprapuse prin
drag & drop asupra taburilor
Panelele pot fi reordonate, mutate între 
zone, ancorate lângă workbench
Separatorii dintre zone pot fi mutaţi
 Perspectivele sunt configuraţii particulare al workbench‐ului
Fiecare se ocupă de un anumit task
Schimbarea perspectivei:
Schimbarea perspectivei:
Salvarea noii perspective cu Window ‐> Save Perspective As…
IDP – Instrumente pentru Dezvoltarea Programelor 20
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Câteva Vederi Eclipse


Câteva Vederi Eclipse
 Navigator (foldere şi fişiere) şi Package Explorer (proiecte cu pachete, fişiere, 
clase, metode, câmpuri)
Iconurile indică tipuri şi stări (e.g. Accesibilitate, eroare)
indică tipuri şi stări (e g Accesibilitate eroare)
Drag & drop: 
mutarea claselor între pachete, fişiere între foldere
Double‐click deschide resursa în editor
Right‐click pe o resursă deschide un meniu de context cu operaţii
 Multe alte vederi: Console, Outline, Hierarchy, Properties, …

IDP – Instrumente pentru Dezvoltarea Programelor 21
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Arhitectura (1)
h ( )
Another
Eclipse Platform
Tool

Java Workbench Help


Development
T l
Tools JFace
(JDT)
SWT
Team Your
Tool

Plug-in Workspace
Development Debug
Environment
(PDE)

Their
Platform Runtime Tool

Eclipse Project

IDP – Instrumente pentru Dezvoltarea Programelor 22
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

A hi
Arhitectura (2)
(2)

Plug-in development PDE


environment

Java development JDT


tools

Eclipse Platform Platform

Standard Java2
Java VM
Virtual Machine

IDP – Instrumente pentru Dezvoltarea Programelor 23
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Arhitectura bazată pe plug‐in‐uri
h b ă l
 Eclipse Platform Runtime este un micro‐kernel
Toate funcţionalităţile sunt oferite de plug in uri
Toate funcţionalităţile sunt oferite de plug‐in‐uri
 Eclipse Platform Runtime start up:
Descoperă plug‐in‐urile instalate local pe disc
Reali ea ă corespundenţa extensii – puncte de extensie
Realizează corespundenţa puncte de extensie
Construieşte un registry global de plug‐in‐uri
Salvează local (cache) registry‐ul
 Pl
Plug‐in –
i cea mai mică unitate funcţională din Eclipse
i i ă it t f ţi lă di E li
Un exemplu mare: editor HTML
Cel mai mic exemplu: Acţiunea de creare a unui fişier zip
 P
Punct de extensie
td t i – entitate identificată prin nume folosită pentru colectarea de 
tit t id tifi tă i f l ită t l t d
“contribuţii”
Exemplu: punct de extensie pentru colectarea preferinţelor asupra workbench‐ului
din UI
 Extensie ‐ o contribuţie
Exemplu: preferinţe specifice ale editorului HTML
IDP – Instrumente pentru Dezvoltarea Programelor 24
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

A hi
Arhitectura bazată pe plug‐in‐uri
b ă l i i

 Un plug‐in
Un plug‐in
Contribuie la 1 sau mai multe puncte de extensie
Poate depinde de alte plug‐in‐uri
Poate depinde de alte plug in uri (un plug‐in poate inclusiv 
(un plug in poate inclusiv
exporta un API)
Conţine
Conţine biblioteci Java şi alte fişiere
biblioteci Java şi alte fişiere
Situat în propriul director de plug‐in

IDP – Instrumente pentru Dezvoltarea Programelor 25
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Componente Eclipse
E li
 Platforma Eclipse reprezintă baza
 Conţine câteva componente cheie

Eclipse Platform

Workbench

“UI”
UI
JFace
SWT Team Help Debug

“Core” Workspace Ant

Platform Runtime

IDP – Instrumente pentru Dezvoltarea Programelor 26
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Componenta workbench
kb h
 SWT (Standard Widget Toolkit) – Set generic de componente grafice de nivel scăzut şi 
widget‐uri
 Butoane, liste, text, meniuri, tree‐uri, text cu stil...
 API independent de platformă
 Foloseşte widget‐uri native atunci când e posibil

 JFace – task‐uri de interacţiune UI
 Registrii de imagini şi fonturi
 Dialoguri, preferinţe
 View‐uri personalizate: adaptoare pentru widget‐uri SWT de formă arbore, tabele, liste, etc.
 Infrastructura pentru widget‐uri de
Infrastructura pentru widget‐uri formatare a textului
de formatare a textului Workbench
 Gestiunea acţiunilor utilizatorilor

 Workbench – personalitatea UI a Eclipse Platform JFace


SWT

IDP – Instrumente pentru Dezvoltarea Programelor 27
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

De ce SWT?
De ce SWT?

Eclipse pe Windows XP Eclipse pe Linux - GTK 2.0

Eclipse pe Linux - Motif Eclipse pe Mac OS X - Carbon

IDP – Instrumente pentru Dezvoltarea Programelor 28
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

T
Terminologia de lucru Eclipse
i l i d l E li
Menu bar
Text
Tool bar editor

Perspective
and
Fast View
bar
Outline
view
Resource
Navigator
view

Bookmarks
Properties view
view

Message Editor
area Status
area
Stacked Tasks
views view

IDP – Instrumente pentru Dezvoltarea Programelor 29
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

P
Perspectiva Java
i J

Ierarhii de
tip

Membrii
selectaţi

IDP – Instrumente pentru Dezvoltarea Programelor 30
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

P
Perspectiva Java
i J

Rezultatele
căutării sunt
marcate
t îîn
stânga

Toate
rezultatele
unei căutări

IDP – Instrumente pentru Dezvoltarea Programelor 31
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Edi
Editorul Java
lJ
Help automat (Javadoc)

Lista de metode
Documentaţia
metodei

IDP – Instrumente pentru Dezvoltarea Programelor 32
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Depanarea programelor

IDP – Instrumente pentru Dezvoltarea Programelor 33
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

P
Procesul de depanare
ld d
 Procesul de identificare şi corectare a erorilor software
Procesul de identificare şi corectare a erorilor software
Folosită în principal pentru găsirea erorilor la run‐time sau a rezultatelor 
incorecte produse de programe

 Erorile de runtime sunt mai greu de depistat decât erorile de compilare
Compilatorul poate depista erorile mai repede (sintaxă incorectă, apeluri 
incorect efectuate, etc.)

 Depanatoarele grafice sunt mai uşor de folosit (Eclipse, Visual Studio) 
decât cele din linia de comandă (gdb)

 În general se corectează o singură eroare la un moment dat şi fiecare 
modificare trebuie bine documentată (se poate folosi şi un VCS precum 
( p ş p
SVN)

IDP – Instrumente pentru Dezvoltarea Programelor 34
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

P fili
Profiling

 Profiling‐ul reprezintă o formă de analiză dinamică a 
funcţionalităţilor oferite de execuţia programului care se 
concentrează pe aspecte măsurabile
p p ale sistemului

IDP – Instrumente pentru Dezvoltarea Programelor 35
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

F
Funcţionalităţi ale unui Profiler
i li ă i l i P fil

 Un Profiler poate:
Măsura timpul necesar pentru rularea aplicaţiei/părţi 
componente ale aplicaţiei
componente ale aplicaţiei
Furniza analize de utilizare
Prezenta
Prezenta istoria de execuţia a programului
istoria de execuţia a programului
Genera rapoarte privind utilizarea memoriei, a instanţelor de 
obiecte, firelor de execuţie, etc.

 Este bine când putem depista “bottleneck‐urile” pentru a putea 
optimiza codul
optimiza codul

IDP – Instrumente pentru Dezvoltarea Programelor 36
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Tipuri de Profilere

 Memory profilers:
Pentru analize ale memoriei native, memoriei colectate, stivei
 Thread profilers:
Detectarea condiţiilor de race, deadlock‐uri, etc.
 Code coverage profiles:
Determinarea segmentelor de execuţie a programului având 
contexte specifice:
t t ifi
•Context: atunci când un utilizator se loghează în sistem 
care sunt metodele care ajung să fie executate?
j g

IDP – Instrumente pentru Dezvoltarea Programelor 37
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

E
Exemple: Profilere Java
l P fil J

 Comerciale:
Co e c a e
Profiler4J, JProfiler, JProbe, YourKit, Introscope (JEE specific) ‐
$$$, etc.

 Open source:
NetBeans Profiler, Java Interactive Profiler, Eclipse TPTP, etc.

IDP – Instrumente pentru Dezvoltarea Programelor 38
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

E
Exemplu: JProfiler
l JP fil

IDP – Instrumente pentru Dezvoltarea Programelor 39
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

E
Exemplu: JProfiler
l JP fil

IDP – Instrumente pentru Dezvoltarea Programelor 40
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

E
Exemplu: JProfiler
l JP fil

IDP – Instrumente pentru Dezvoltarea Programelor 41
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

E
Exemplu: JProfiler
l JP fil

IDP – Instrumente pentru Dezvoltarea Programelor 42
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

E
Exemplu: JProfiler
l JP fil

IDP – Instrumente pentru Dezvoltarea Programelor 43
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

D
Depanarea folosind Eclipse
f l i d E li
 Features:
Breakpoints
•Double‐click pe marginea din stânga
Step into – execuţia instrucţiunii următoare
•Din perspectiva Debug – F5
Step over – step into, cu salt peste execuţia unei metode
•Din perspectiva
•Din perspectiva 
Step return
Step Filters
Watches
Run to line
Suspend/Resume/Terminate
/ /

IDP – Instrumente pentru Dezvoltarea Programelor 44
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

D
Depanarea folosind Eclipse
f l i d E li
 Features:
Breakpoints
•Double‐click pe marginea din stânga
Step into – execuţia instrucţiunii următoare
•Din
Din perspectiva Debug
perspectiva Debug – F5
Step over – step into, cu salt peste execuţia unei metode
•Din perspectiva Debug – F6
Step return
p – execuţia instrucţiunilor rămase din metoda curentă
ţ ţ
•Din perspectiva Debug – F7
Step cu Filters – execuţia numai a anumitor metode
•Window > Preferences > Java > Debug > Step Filtering
Watches – verificarea/modificarea valorilor variabilelor
•Din perspectiva Debug fereastra “Variables”
Run to line – setarea unui breakpoint temporar
Suspend/Resume/Terminate

IDP – Instrumente pentru Dezvoltarea Programelor 45
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

E li
Eclipse Java Debugger
J D b
Local variables

Threads
and stack
frames

Editor with
Edito ith
breakpoint
marks

Console
I/O
46

IDP – Instrumente pentru Dezvoltarea Programelor 46
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Java sau .NET?

IDP – Instrumente pentru Dezvoltarea Programelor 47
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Comparaţie Java vs .NET
 Java – creat de Sun în 1992
 Microsoft  a introdus .NET şi C# în 2000
 Ambele platforme/limbaje sunt orientate‐obiect, oferă 
Ambele platforme/limbaje sunt orientate‐obiect oferă
verificări ale tipurilor de date şi includ mecanisme de 
automatic garbage collection

 Limbaje concurente pentru dezvoltarea aplicaţiilor
În special în domeniul dezvoltării aplicaţiilor paralele şi 
distribuite
 Care sunt avantajele şi dezavantajele folosirii fiecăreia? 
Care sunt avantajele şi dezavantajele folosirii fiecăreia?

IDP – Instrumente pentru Dezvoltarea Programelor 48
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

De ce aceste platforme? Problemele cunoscute ale 
De ce aceste platforme? Problemele cunoscute ale
limbajelor C şi C++
 Folosirea pointerilor
Folosirea pointerilor poate fi periculoasă
poate fi periculoasă
Memory leaks (eliberarea incorectă a memoriei)
Function pointers (saltul în locul incorect în program)
Data
Data pointers (pointeri către datele greşite)
pointers (pointeri către datele greşite)

 Colectarea manuală a memoriei reprezintă un risc pentru dezvoltatorii 
de proiecte
de proiecte

 Moştenirea multiplă (C++) poate complica codul
Ambiguităţi precum “problema diamantului” ( ‐ “diamond of death”)

 Nu sunt uşor portabile pe diverse platforme, chiar şi recompilare şi 
ş p p p , ş p ş
disciplină a codului

IDP – Instrumente pentru Dezvoltarea Programelor 49
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Câteva dintre avantajele Java comparativ cu C++


Câteva dintre avantajele Java comparativ cu C++
 În loc de pointeri Java lucrează cu referinţe
Referinţele oferă în plus protecţie – nu se pot executa salturi în părţi greşite ale 
memori, sunt evitate probleme de tip segmentation fauls
 Colectarea automată a memoriei
Memoria este colectată din heap automat – se evidă scăpările de memorie
 Single inheritance
Se evidă problema diamantului
 Încapsulare
Tot codul trebuie să aparţină unei clase – se ascunde informaţie în mod voluntar 
pentru a simplifica viziunea arhitecturală
pentru a simplifica viziunea arhitecturală
 Verificarea limitelor array‐urilor
 Biblioteci
Multe task‐uri comune deja codate sunt disponibile şi uşor de refolosit prin 
M lt t k i d j d t t di ibil i d f l it i
moştenire
Multe interfeţe şi comportamente sunt deja codate şi pot fi uşor reintegrate în alte 
aplicaţii

 Mai multe diferenţe: http://harbormist.com/AcmJava/topics/c2java.html
IDP – Instrumente pentru Dezvoltarea Programelor 50
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

D
Dar platforma Microsoft .NET?
l f Mi f NET?
 Înainte de.NET, Microsoft avea o mare problemă
Microsoft suporta prea multe sisteme de operare
API‐urile erau implementate ca biblioteci legate dinamic (DLL‐uri) 
dezvoltate folosind C++
Apelurile către API‐ul Windows era diferit pe fiecare sistem de 
operare
Dezvoltatorii
Dezvoltatorii întăi
întăi trebuiau să descopere pe ce sistem de operare 
trebuiau să descopere pe ce sistem de operare
rula programul dezvoltat
•şi apoi să determine dacă API‐ul dorit era şi instalat pe respectivul sistem 
de operare

Toate acestea pot părea triviale la prima vedere
până
până la urmă există puţine forme diferite de Windows…
la urmă există puţine forme diferite de Windows…
…corect?

IDP – Instrumente pentru Dezvoltarea Programelor 51
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Versiuni de Windows ce pot rula mediul NET


Versiuni de Windows ce pot rula mediul .NET
1. Windows 98 22. Windows XP Professional x64 Edition
2
2. Windows 98 Second Edition
Windows 98 Second Edition 23. Windows Server 2003, Standard x64
Edi i
Edition
3. Windows 2000 Professional with SP4 24. Windows Server 2003, Enterprise x64
4. Windows 2000 Server with SP4 Edition
5. Windows 2000 Advanced Server with SP4 25. Windows Server 2003, Datacenter x64
6. Windows 2000 Datacenter Server with SP4 Edition
7. Windows XP Professional with SP2
d f l h 26 Windows
26. Wi d S
Server 2003 R2
R2, SStandard
d d x64
64
8. Windows XP Home Edition with SP2 Edition
9. Windows XP Media Center Edition 2002 with SP2 27. Windows Server 2003 R2, Enterprise x64
10. Windows XP Media Center Edition 2004 with SP2 Edition
11. Windows XP Media Center Edition 2005 28. Windows Server 2003 R2, Datacenter x64
Edition
12. Windows XP Tablet PC Edition with SP2 29. Windows Server 2003 with SP1, Enterprise
13. Windows XP Starter Edition Edition for Itanium-based Systems
14. Microsoft Windows Millennium Edition 30. Windows Server 2003 with SP1,
15. Microsoft Windows Server™ 2003 Standard Edition Datacenter Edition for Itanium-based
16
16. Windows Server 2003 Enterprise Edition
Windows Server 2003 Enterprise Edition Systems
17. Windows Server 2003 Datacenter Edition 31. Windows Server 2003 R2, Enterprise
18. Windows Server 2003 Web Edition Edition for Itanium-based Systems
19. Windows Server 2003 R2, Standard Edition 32. Windows Server 2003 R2, Datacenter
Edition for Itanium-based Systems
20. Windows Server 2003 R2, Enterprise Edition 33 Microsoft Windows Mobile™
33. Mobile for Pocket PC
21. Windows Server 2003 R2, Datacenter Edition  34. Windows Mobile for Smartphone
35. Microsoft Windows CE
• NOTĂ: nu este inclus şi Vista, 7
IDP – Instrumente pentru Dezvoltarea Programelor 52
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Versiuni de Windows ce nu pot rula .NET
framework v2.0

1. Windows 95
2. Windows NT® Server
3. Windows NT Workstation
4. Windows Server 2003, Enterprise Edition for Itanium‐based 
Systems
5. Windows Server 2003, Datacenter Edition for Itanium‐based 
Systems

IDP – Instrumente pentru Dezvoltarea Programelor 53
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic
// Java
p blic class Hello {
public
public static void main(String[] args) {
System.out.println("Hello world in Java");
}
}

// C#
namespace Hello {
public class Hello {
static void Main(string[] args) {
System.Console.WriteLine ("Hello world in C#");
System.Console.ReadLine();
}
}
}

‘ VB
Module HelloWorld
Sub Main
System.Console.WriteLine(“Hello World in VB.NET”)
System.Console.ReadLine()
End Sub
End Module

IDP – Instrumente pentru Dezvoltarea Programelor 54
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Necesarul de efort pentru a produce o fereastră 
grafică

IDP – Instrumente pentru Dezvoltarea Programelor 55
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic
import java.awt.*;
import javax.swing.*;

public class Hello extends JFrame implements Runnable


{ usingg System.Windows.Forms;
y ;
namespace TinyWindowApp
public static void main(String[] args)  {
{ public class HelloForm : Form
SwingUtilities.invokeLater(new Hello()); {
} static void Main()
{
public void run() Application.Run(new HelloForm());
{ }
this.setSize(new
hi i ( Dimension(200,200));
i i ( ))
this.setTitle("Hello in Java"); public HelloForm()
this.setVisible(true); {
} ClientSize = new
} System.Drawing.Size(200, 200);
Text = "Hello in C#";
}

}
Fereastra minimală }

IDP – Instrumente pentru Dezvoltarea Programelor 56
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Comparaţie a mediului de runtime
i di l i d i

 J2SE (Standard) runtime • C# sau VB.NET cu VS


Express
desktop applications
– desktop application
 J2EE (Enterprise) runtime • IIS cu VS Express Web
web
web applications
applications – web applications
 J2ME (Micro) runtime • .NET compact
runtime for gadgets
runtime for gadgets framework
– runtime for gadgets

IDP – Instrumente pentru Dezvoltarea Programelor 57
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Java platform vs. .NET platform


Java platform vs NET platform
 Java Virtual Machine (JVM) aka Java 
Runtime Environment (JRE) • Microsoft .NET Framework 2.0 aka
 Linux, Windows, Mac and Unix .NET common language runtime (CLR)
 download from Sun – all versions of Windows (40+)
•JIT compiler and libraries – download from Microsoft
• JIT compiler and libraries

 Java Development Kit (JDK)
p ( )
• NET framework 2.0
2 0 SDK
 Java compiler and utilities
– C# and VB.NET compilers and utilities
•Java bytecode
• Common Intermediate Language (CIL)

 integrated development env. (IDE)
integrated development env (IDE) • integrated development env.
env (IDE)
 Eclipse (free ‐ IBM) – Visual Studio Express (free - Microsoft)
 Netbeans (free ‐ Sun) GRATIS

 application servers NOT • application


li ti servers
 Tomcat – Microsoft Internet Information Server
(IIS)
 Glassfish (Sun)
 BEA Weblogicg
 IBM Websphere

IDP – Instrumente pentru Dezvoltarea Programelor 58
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

 virtual machine
Caracteristici
• virtual machine
platforms (all major OS’s)
– platforms (all versions of
spec Windows))
implementations – spec
 libraries – implementations
 languages
g g • libraries
Java • l
languages
Jython – C#, VB.NET, J# from Microsoft
Groovy – many others from third parties
((Haskell, Lisp,
p Python,
y COBOL,
 web servers (many vendors) Fortran, etc.)
platforms (Unix, Linux) • web servers (just one!)
scalability – platforms (most Windows)
cost – scalability
– cost
 web capabilities
servlet
• web capabilities
– handler
JSP
– ASP (.NET)
JSF

IDP – Instrumente pentru Dezvoltarea Programelor 59
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

 native code calling
Mai multe caracteristici
Mai multe caracteristici
 components • native code calling
beans • components
 environments – .DLL
DLL
applet (in browser) • environments
servlet (in server) – ActiveX (in browser)
Web Start
Web Start – handler (in server)
•installs from web – Smart Client
•caches on user’s PC • installs from web
• caches on user’s PC
 deployment
.jar • deployment
.war – .exe (on file system)
.ear – .exe (in GAC)
 .class
class – .dll ((on file system)
y )
complex, painful learning curve that  – all builds and web installation
differs for each web server,  is automatically handled by
container, and IDE Visual Studio (Microsoft’s
•automated via ANT IDE)
– XML, like make on Unix

IDP – Instrumente pentru Dezvoltarea Programelor 60
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Şi mai multe caracteristici...


Şi mai multe caracteristici...
 databases • databases
JDBC – ODBC
 CORBA • COM
binary object remoting – binary object remoting
• XML
 XML – excellent support earlyy one
via 3rd‐party add‐ons until Java 6 • IDE’s
 IDE’s – free versions of Visual Studio
Eclipse, with 1000’s of plugins – some third party IDE’s
NetBeans (from Sun) – also free • service oriented architecture (SOA)
– annotations
 service oriented architecture (SOA) – web services WS-I
annotations appearing • superbly automated by Visual Studio
since
i 200
2005
web services WS‐I
•supported but difficult (3rd party)
•new partial automation in Java 6 and 
latest NetBeans IDE
latest NetBeans
– I haven’t evaluated these yet
Sursa: Wikipedia - Comparison of the Java and .NET platforms

IDP – Instrumente pentru Dezvoltarea Programelor 61
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Compilatoare just
Compilatoare just‐in‐time
in time în mediile JRE (JVM) şi 
în mediile JRE (JVM) şi
.NET
compilation

source bytecode
code compiler
p .class file
metadata

before installation,
execution or the first time
each method is
called
native JIT
code p
Compiler

IDP – Instrumente pentru Dezvoltarea Programelor 62
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

C
Comenzi consolă pentru compilare JAVA şi C#.NET
i lă t il JAVA i C# NET

hello.java
j hello.cs

javac csc

hello.class hello.exe

1001111010001110 1001111010001110
Java bytecode C
Common IIntermediate
t di t LLanguage (CIL)

> java hello > hello.exe cod asamblare

acestea rulează în
maşini virtuale diferite

IDP – Instrumente pentru Dezvoltarea Programelor 63
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Componentele platformei .NET
download free
Software Development
Kit (SDK)

compilers
VB C++ C# J# Python
y …

web services automation Windows Designer


Microsoft Visual
ASP.NET, IIS Studio .NET

Data and XML


Microsoft .NET
framework class libraries Framework
Common Language Runtime (CLR)
virtual machine (like Java)

Microsoft operating systems since Win98 free download

IDP – Instrumente pentru Dezvoltarea Programelor 64
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Componentele platformei Java
download free
Software Development
Kit (SDK)

compilers
Java JRuby
y JPython
y …

web services automation beans, remoting, servers


various open source
Java Server Pages and servlets and proprietary players

Data and XML

Java API’s JRE and JDK

Java Runtime Environement (JRE)


virtual machine

Unix, Linux, Max OS X, Windows free download

IDP – Instrumente pentru Dezvoltarea Programelor 65
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

Comparaţie .NET vs Java

IDP – Instrumente pentru Dezvoltarea Programelor 66
Platformă de e‐learning și curriculă e‐content pentru 
învățământul superior tehnic

R f i
Referinţe

 http://msdn.microsoft.com/en‐us/vstudio/default.aspx
http://msdn.microsoft.com/en us/vstudio/default.aspx
 http://www.eclipse.org/
 http://www.ej‐technologies.com/products/jprofiler/overview.html

IDP – Instrumente pentru Dezvoltarea Programelor 67

S-ar putea să vă placă și

  • Teza Licenta Magazin Online
    Teza Licenta Magazin Online
    Document26 pagini
    Teza Licenta Magazin Online
    KristinutzaProdan
    0% (1)
  • Raspunsuri AMSI
    Raspunsuri AMSI
    Document11 pagini
    Raspunsuri AMSI
    Cristina Florea
    Încă nu există evaluări
  • Proiectul de An
    Proiectul de An
    Document43 pagini
    Proiectul de An
    Rosca Doinita
    Încă nu există evaluări
  • ExamAC Ro
    ExamAC Ro
    Document16 pagini
    ExamAC Ro
    Rosca Doinita
    100% (1)
  • Amoo Partea I
    Amoo Partea I
    Document20 pagini
    Amoo Partea I
    Rosca Doinita
    Încă nu există evaluări
  • Proiect de An
    Proiect de An
    Document23 pagini
    Proiect de An
    Cristina Florea
    Încă nu există evaluări
  • Ac Răspunsuri
    Ac Răspunsuri
    Document19 pagini
    Ac Răspunsuri
    Rosca Doinita
    Încă nu există evaluări
  • Lab10 11 12 13BDC
    Lab10 11 12 13BDC
    Document7 pagini
    Lab10 11 12 13BDC
    Rosca Doinita
    Încă nu există evaluări
  • Lab4 Aplicatii Web Ro
    Lab4 Aplicatii Web Ro
    Document1 pagină
    Lab4 Aplicatii Web Ro
    Rosca Doinita
    Încă nu există evaluări
  • Examen PS
    Examen PS
    Document45 pagini
    Examen PS
    Rosca Doinita
    Încă nu există evaluări
  • BDC Laborator 13
    BDC Laborator 13
    Document5 pagini
    BDC Laborator 13
    Rosca Doinita
    Încă nu există evaluări
  • Examen TIDPP
    Examen TIDPP
    Document3 pagini
    Examen TIDPP
    Rosca Doinita
    Încă nu există evaluări
  • Orar Examen FR IV
    Orar Examen FR IV
    Document3 pagini
    Orar Examen FR IV
    Rosca Doinita
    Încă nu există evaluări
  • Lab3 Gen Doc Ro
    Lab3 Gen Doc Ro
    Document1 pagină
    Lab3 Gen Doc Ro
    Rosca Doinita
    Încă nu există evaluări
  • Lab2 Studiu IDE Ro
    Lab2 Studiu IDE Ro
    Document1 pagină
    Lab2 Studiu IDE Ro
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 10
    Prezentare 10
    Document12 pagini
    Prezentare 10
    Rosca Doinita
    Încă nu există evaluări
  • PR 7
    PR 7
    Document41 pagini
    PR 7
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 3
    Prezentare 3
    Document10 pagini
    Prezentare 3
    Rosca Doinita
    Încă nu există evaluări
  • Lab1 Git Ro
    Lab1 Git Ro
    Document17 pagini
    Lab1 Git Ro
    Rosca Doinita
    Încă nu există evaluări
  • PR 5
    PR 5
    Document67 pagini
    PR 5
    Rosca Doinita
    Încă nu există evaluări
  • PR 6
    PR 6
    Document110 pagini
    PR 6
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 11
    Prezentare 11
    Document16 pagini
    Prezentare 11
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 7
    Prezentare 7
    Document8 pagini
    Prezentare 7
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 8
    Prezentare 8
    Document34 pagini
    Prezentare 8
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 7
    Prezentare 7
    Document8 pagini
    Prezentare 7
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 7
    Prezentare 7
    Document8 pagini
    Prezentare 7
    Rosca Doinita
    Încă nu există evaluări
  • PR 7
    PR 7
    Document41 pagini
    PR 7
    Rosca Doinita
    Încă nu există evaluări
  • pr8 PDF
    pr8 PDF
    Document113 pagini
    pr8 PDF
    Rosca Doinita
    Încă nu există evaluări
  • Prezentare 2
    Prezentare 2
    Document9 pagini
    Prezentare 2
    Rosca Doinita
    Încă nu există evaluări
  • PR 6
    PR 6
    Document110 pagini
    PR 6
    Rosca Doinita
    Încă nu există evaluări