Bevezetés kr304@hszk.bme.hu UNIX, 2005. május 13.
Bevezetés Tartalomjegyzék 1 Bevezetés IDE IDE eszközök 2 Célkitűzés Architektúra CDT Project Összefoglalás
Bevezetés IDE IDE eszközök Integrated Development Environment Olyan szoftver, ami széleskörűen támogatja a fejlesztés során előforduló feladatokat Szövegszerkesztés, RAD- és GUI-varázslók Fordítás/Interpretálás automatizálása (make, automake, autoconf, scons) Nyomkövetés, futtatás Nézetek (Class browser), diagramkészítők Verziókövető Dokumentáció Célja a fejlesztő produktivitásának fokozása A tanulási idő rövidítése A nem-kreatív feladatok átvállalása Szorosabb együttműködés: az ember vizuális, a gép precíz Kényelmes eszközhasználat (Front-end) Funkciók kiterjesztése (Extension)
Bevezetés IDE IDE eszközök Példák A Nagy Öregek (parancssorosak) Dartmouth Time Sharing System: BASIC nyelvhez (1964) UNIX és GNU eszközök: gvim/emacs + make + ddd +... A ddd grafikus debugger front-end, kitűnő adatábrázolással Borland, Sun, Microsoft termékek Nyílt forráskódúak Motor: konzolos (terminálos) C++, Java, Perl Anjuta: C++ és Gnome/GTK GUI KDevelop: C++ és KDE/QT GUI, továbbá 10 másik nyelv NetBeans: Java Eclipse: univerzális?
Eclipse motivációk Bevezetés Célkitűzés Architektúra CDT Project Összefoglalás Nyílt forráskódú Nehézsúlyú ( robust ) Sokoldalú ( full-featured ) Magas színvonalú ( commercial-quality ) Nyílt platform Windows, Linux, Solaris, Apple Mac Nyelvfüggetlen, specifikus elemek plugin formában Bővíthető architektúra: tetszőleges plugin felcsatolható Java alapú platform és modulok Konzorcium áll mögötte (IBM, Borland, Novell, HP,... )
Bevezetés Célkitűzés Architektúra CDT Project Összefoglalás Felépítés: mikrokernel + sok plugin
Plugin felépítése Bevezetés Célkitűzés Architektúra CDT Project Összefoglalás Építőkocka, legkisebb önálló egység Illesztési pontok ( Extension point ) Minden plugin 1 vagy több külső pontra illeszkedik Deklarálhat saját illesztési pontokat Java nyelv interfész-implementáció mechanizmusával Függőségi viszonyok Egy külön alkönyvtár Java- és natív függvénykönyvtárakkal Önleíró entitás ( manifest állomány: plugin.xml) A Platform Runtime mikrokernel menedzseli a plugineket Csak igény esetén tölti be, nem induláskor Induláskor összeköti logikailag az installált pluginokat Minden funkcionalitást valamelyik plugin nyújtja
Eclipse Plug-in Architecture Typical arrangement plug-in A extension point P contributes plug-in B extension interface I implements class C Plug-in A creates, calls Declares extension point P Declares interface I to go with P Plug-in B Implements interface I with its own class C Contributes class C to extension point P Plug-in A instantiates C and calls its I methods 200303331 14
Bevezetés C/C++ Development Tools Célkitűzés Architektúra CDT Project Összefoglalás Egy plugin-csomag Gyorsan fejlődő szoftver, lelkes közösség Tartalmazza C/C++ Editor (syntax highlighting, code completion etc.) C/C++ Debugger (GDB front-end) C/C++ Launcher Parser Search Engine Content Assist Provider Makefile generator Jó dokumentáció Könnyen kezelhető
Előnyök Bevezetés Célkitűzés Architektúra CDT Project Összefoglalás Ingyenes (nyílt forráskódú) Jó minőségű, modern grafikus IDE Aktívan támogatja a konzorcium Igéretes vetélytársa a kereskedelmi eszközöknek Bővíthető Rengeteg ingyenes és kereskedelmi plugin Egy környezetben: C, Java, PHP, Web, UML, Perl,... Jó felépítés: könnyű plugint írni Sok plugin is installálható egyszerre (dinamikus betöltés) Könnyen kezelhető, installálható Élő közösség, cikkek, konferenciák The proof of the pudding is in the eating
Demo - Bináris fa Függelék Demo Installálás Hivatkozások > g++ -g demo.cc > ddd a.out
Demo - Forráskód #include<iostream> class Elem { int ertek; Elem * bal, * jobb; public: Elem(int ertek, Elem *bal, Elem *jobb) { this->ertek = ertek; this->bal = bal; this->jobb = jobb; } ~Elem() { if (bal!= NULL) delete bal; std::cout << ertek; if (jobb!= NULL) delete jobb; } }; int main(int argc, char **argv) { Elem * gyoker = new Elem(4, new Elem(2, new Elem(1, NULL, NULL), new Elem(3, NULL, NULL) ), new Elem(5, NULL, NULL) ); std::cout<<"bejárjuk a fát: "; delete gyoker; }
Függelék Demo Installálás Hivatkozások Installálás egyszerű felhasználóként (Linux) ECLIPSEURL=http://eclipse.gabriel.co.hu/downloads/drops/R-3.0\.2-200503110845/eclipse-SDK-3.0.2-linux-gtk.zip ECLIPSECDTURL=http://download.eclipse.org/tools/cdt/releases/\ new/zips/2.1.1/org.eclipse.cdt.sdk-2.1.1-linux.x86.zip # Ideiglenes könyvtár a telepítési állományokhoz TEMP_KONYVTAR= mktemp -d exit 1 # Letöltés cd $TEMP_KONYVTAR && wget $ECLIPSEURL && wget $ECLIPSECDTURL # Telepítés mkdir $HOME/opt ; cd $HOME/opt exit 1 for i in $TEMP_KONYVTAR/*.zip ; do unzip $i ; done # Java Runtime Environment beállítása cd eclipse && ln -s $HOME/j2re1.4.2_08 jre && cd.. # Letörölhetjük a.zip fájlokat rm -r $TEMP_KONYVTAR
Hivatkozások Függelék Demo Installálás Hivatkozások Eclipse Project FAQ http://www.eclipse.org/eclipse/faq/eclipse-faq.html CDT (C/C++ Development Tools) Project Tutorial, Documentation, FAQ http://eclipse.org/cdt/ OTI, Inc. Eclipse Platform Technical Overview http://www.eclipse.org/whitepapers/eclipse-overview.pdf WikipediA Integrated Development Environment http://en.wikipedia.org/wiki/integrated_development_environment