2. Fejlesztést támogató eszközök, keretrendszerek
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
IDE: Toolok integrációja az editor felületébe
IDE felépítése: Alaprendszer(Platform), és rá épülnek a toolok, amelyek épülhetnek egymásra is
2.1. Eclipse
Architektúra:
- Workspace: Filerendszer kezelés
- SWT: Alap UI elemek
- JFace: Absztraktabb UI elemek
- Workbench: Az Eclipse UI elemei
- Debug: Általános hibakeresési keretrendszer
- Team: Csoportmunka támogatás
- Help: Bővíthető help
Service Registry: Bundlek dinamikusan összekapcsolódhatnak
Class Loading:
- Cache
- Parent
- Self
Classpath: Bundle szintű, ezáltal dinamikus
Life Cycle: Install, start, stop, update, uninstall
Plugin:
- MANIFEST.MF: OSGi specifikációnak megfelelő. Tartalmazza: import,export,require(...)
- plugin.xml: Eclipse saját kiegészítése. Tartalmazza: Extension pointok leírása
Workspace:
- Directory projecteknek: API+szolgáltatások
- Resources: Project, folder, file
- Project bárhol lehet
- Folder, file csak projecten belül
- Linked: Fizikailag máshol van
- Derived: Származtatott(pl. generált)
- Local history: fájlok előző verzióit tartalmazza
- Kiterjesztési pontok:
- Markers(jelölők): Erőforráshoz kapcsolható megjegyzések
- Project Natures: Builderek, markerek kapcsolhatók
- Project builders: Erőforrást módosít, lehet inkrementális is
- Erőforrások figyelése
- Resource Change Listeners: Értesítés, miután megváltozik az erőforrás. Delta és művelet lekérdezhető
- Resource Modification Hooks: Befolyásolhatjuk, hogyan módosuljanak az erőforrások
- Workspace Save Participants: Mentésnél
- Adaptable pattern
Workbench:
- Eclipse UI megvalósítása
- SWT: Amilyen elemek megvannak az adott platformon, azt használja, ami nincs, azt emulálja
- JFace: Magasabb szintű UI elemek és mechanizmusok
- Workbench: Felhasználói felület. Editorok, nézetek, perspektívák.
Debug:
- Nyelv-, és platfomfüggetlen
- Indítási konfigurációk
Team:
- Csapatmunka támogatása
- Projectek megosztása egy repositoryban
- Szinkronizáció
Help:
- HTML alapú
- Tartalomjegyzék XML-ben
- Viewben elheyezhető
- Cheat sheetek munkafolyamatok leírására
JDT: Java Development Tools
- JDT Core
- Java Model API: Java kód absztrakt reprezentációja metódusszintig
- Navigáció, Code Assist, Formatting, Resolve, Type Hierarchy
- Java Search API: Java Model alapján indexeli a projecteket: referenciák, deklarációk, típis hierarhia
- AST API: A forráskód teljes értékű modellje: refactoring, quick fix, fordítás
- Refaktorálás: Kód szerkezetének módosítása anélkül, hogy a működése megváltozna
- Refaktorálási résztvevők: Ha a forráskódon kívül is kell változtatni(konfig,...)
- Language Toolkit: Nyelvfüggetlen keretrendszer
- Refaktorálás: Kód szerkezetének módosítása anélkül, hogy a működése megváltozna
- Java Model API: Java kód absztrakt reprezentációja metódusszintig
- JDT UI
- Perspektívák:
- Java
- Java Browsing
- Java Type Hierarchy
- Debug
- Perspektívák:
2.2. Verziókezelés
Célja: Szoftver életciklusa során a forráskód tárolása, karbantartása
- Változások nyilvántartása
- Csoportmunka támogatása
Sokféle:
- SCM(Source Code Management)
- RCS(Revision Control System)
- VCS(Version Control System)
Evolúció:
- Backupok
- Adatvesztés ellen
- Teljes, inkrementális, megjegyzések, elosztott
- Eszközök: rsync
- Csoportmunka:
- Megoldások:
- Egszerre csak 1 ember dolgozik
- Osztott tárterület
- Fájl zárolás
- Merge
- Megoldások:
Alapelvek:
- Változások követése: +metaadatok
- Csoportmunka
- Párhuzamos változatok fejlesztése: Branching
Alapfogalmak:
- Repository: Ahol a dokumentumokat és a verziókezeléshez szükséges metaadatokat tároljuk
- Working copy: A repositoryban tárolt dokumentumok egy részének helyi másolata, ezen dolgozunk
- Check out: Working copy-be adat behozás repositoryból
- Commit: Repositoryba kiírás working copy-ból
- Working copy frissítése
Változások követése:
- Minden változat eltárolása
- Egy fájl összes változatát összefésülve tároljuk
- Weave módszer
- Ami nem változik, azt csak egyszer kell tárolni
- Tetszőleges változat visszaállítható O(n) költséggel
- Új változat készítése lassú, mert az egész fájlt újra kell generálni
- Delta módszer
- Csak a változásokat tároljuk
- Reverse deltas: A legfrissebb változat plain text
- Forward deltas: A legelső változat plain text
- Nem mindig jó teljesítmény
- Delták összevonása módszer
- Skip delta módszer:
- A deltákat nem a szomszédos deltához számoljuk
- SVN algoritmus:
- 0-tól számozunk
- Legnagyobbtól nézzük visszefele
- Ahány 0 van a bináris leírásában, 2^-addig megyünk vissza, 0-tól kezdve(pl. 8=1000, tehát 8-2^0,8-2^1,8-2^2,8-2^3-ba megy nyíl)
- Amibe már mutat nyíl, oda nem mutat mégegy
- Csak a változásokat tároljuk
Csoportmunka támogatása:
- Egyidejű hozzáférés
- Lock-modify-unlock
- 1 fájlt zárolunk, szerkesztjük, majd elengedjük
- Csak 1 fájlra működik, többre nem
- Copy-modify-merge
- Lock-modify-unlock
- Több változat egyidejű fejlesztése
- Branching: Fa struktúrájú repository
- Trunk: A fő vonal
- Branches: Ágak
- Merge-vel lehet összevonni, ekkor a másik ágban történt fejlesztések beleolvadnak az egyikbe
- Branching: Fa struktúrájú repository
- Távoli elérés
Elosztott verziókezelő rendszerek:
- Nincs központi repository
- Offline munka
- Changesetek
- Új műveletek
- Pull: remote->local
- Push: local->remote
- Intenzív branching
Történelem:
- RCS:
- Csak fájlokra
- Lock-modify-unlock
- Delta módszer
- Branching
- Nincs távoli hozzáférés
- CVS:
- F/OSS
- Copy-modify-merge és lock
- Kliens-szerver
- Több fájl
- Hátrányok:
- Fájlszintű
- Nincs rename/move
- Nagy hálózati forgalom
- Befejezték a fejlesztést
- Branch/merge nem igazán működik jól
- SVN:
- Könyvtárakat kezel
- CVS udótja, ugyazast tudja, mint a CVS csak jobban
- Egyszerűsített release számozás
- CVS: fájlonként, módosításonként
- SVN: a teljes repositorynak van verziószáma
- branch -> merge
- Aktívan fejlesztik
- kisebb hálózati forgalom
-- sashee - 2009.05.24.