<map version="0.7.1">
<node TEXT="GKO, luennot 27.-28.8.">
<node TEXT="Java" FOLDED="true" POSITION="right">
<node TEXT="Kielest&#xe4; ja kirjastoista">
<node TEXT="Java vs. C++">
<node TEXT="Java == &quot;C++ done right&quot;? - version 1.5 my&#xf6;t&#xe4; java muistuttaa yh&#xe4; enemm&#xe4;n C++:aa (Templatet)"/>
</node>
<node TEXT="Java vs. Delphi">
<node TEXT="Javassa Delphi&#xe4; monipuolisempi (oliopohjainen) tapahtumak&#xe4;sittelymalli"/>
<node TEXT="JavaBean-komponentit "/>
</node>
<node TEXT="Java kielen&#xe4;">
<node TEXT="C++ -tyylinen syntaksi"/>
<node TEXT="Roskienkeruu"/>
<node TEXT="Serialisointi (tuki mink&#xe4; tahansa olion lataamiselle ja tallennukselle)"/>
<node TEXT="Synkronointi (kriittisi&#xe4; lohkoja koodin sis&#xe4;ll&#xe4;, helpottaa monis&#xe4;ikeisten sovellusten tekemist&#xe4;)"/>
</node>
<node TEXT="Java kirjasto- ja komponenttikokoelmana">
<node TEXT="S&#xe4;ili&#xf6;t"/>
<node TEXT="K&#xe4;ytt&#xf6;liittym&#xe4;kirjastot"/>
<node TEXT="Tietokantaohjelmointi (JDBC)"/>
<node TEXT="Verkko-ohjelmointi (Socketit, RPC, RMI, CORBA, EJB...)"/>
<node TEXT="XML:n k&#xe4;sittely (DOM- ja SAX-rajapinnat)"/>
<node TEXT="... (ks. javan dokumentaatio)"/>
</node>
</node>
<node TEXT="AWT: Javan alkuper&#xe4;inen k&#xe4;ytt&#xf6;liittym&#xe4;kirjasto" FOLDED="true">
<node TEXT="Abstrakti luokkakokoelma, jolla oli tarkoitus kuvata eri k&#xe4;ytt&#xf6;j&#xe4;rjestelmien k&#xe4;ytt&#xf6;liittym&#xe4;komponentit">
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; eri j&#xe4;rjestelm&#xe4;t eroavat toisistaan niin paljon, etteiv&#xe4;t AWT-k&#xe4;ytt&#xf6;liittym&#xe4;t toimi aina kunnolla j&#xe4;rjestelmien v&#xe4;lill&#xe4;"/>
<node TEXT="Seuraus: Swing"/>
</node>
<node TEXT="Komponentit ovat k&#xe4;ytt&#xf6;j&#xe4;rjestelm&#xe4;n omia, Java &quot;kaappaa&quot; niiden tapahtumat ja hallinnan"/>
<node TEXT="Oliopohjainen tapahtumak&#xe4;sittelymalli AWT:n peruja"/>
</node>
<node TEXT="JFC: Javan &quot;standardi&quot; k&#xe4;ytt&#xf6;liittym&#xe4;kirjasto" FOLDED="true">
<node TEXT="Muitakin on (esim Eclipse-ymp&#xe4;rist&#xf6;n SWT)"/>
<node TEXT="Perustuu Swing-k&#xe4;ytt&#xf6;liittym&#xe4;kirjastoon (my&#xf6;s jonkin verran AWT-luokkia k&#xe4;yt&#xf6;ss&#xe4;)"/>
<node TEXT="MVC (Model-View-Controller ) -ajattelutapa" FOLDED="true">
<node TEXT="Esim. listakontrollin data on omassa ListModel-rajapinnan toteuttavassa rakenteessaan, joka on erill&#xe4;&#xe4;n k&#xe4;ytt&#xf6;liittym&#xe4;st&#xe4;"/>
</node>
<node TEXT="K&#xe4;ytt&#xf6;liittym&#xe4;komponentit ovat kuvia (vrt. k&#xe4;ytt&#xf6;j&#xe4;rjestelm&#xe4;n kontrolleja), joiden hallinnasta vastaa Javan virtuaalikone" FOLDED="true">
<node TEXT="Mahdollistaa &quot;lennossa&quot; vaihdettavan komponenttien ulkoasun ja &quot;tuntuman&quot; (look &amp; feel)"/>
<node TEXT="Huonona puolena on, ett&#xe4; komponentit poikkeavat hieman k&#xe4;ytt&#xf6;j&#xe4;rjestelm&#xe4;n omista kontrolleista eiv&#xe4;tk&#xe4; aina ole yht&#xe4; sulavia k&#xe4;ytt&#xe4;&#xe4; (tottumuskysymys, Java 1.4:st&#xe4; alkaen Swing-k&#xe4;ytt&#xf6;liittym&#xe4;t ovat jo k&#xe4;ytett&#xe4;vyydess&#xe4; hyvin l&#xe4;hell&#xe4; natiivikontrolleja)"/>
</node>
</node>
<node TEXT="Oliopohjainen tapahtumak&#xe4;sittelymalli" FOLDED="true">
<node TEXT="Tapahtumat ovat olioita, jotka on peritty Event-luokasta"/>
<node TEXT="Tapahtumak&#xe4;sittelij&#xe4;t ovat olioita, jotka toteuttavat EventListener -tyyppisen rajapinnan" FOLDED="true">
<node TEXT="Usein (mutta ei mitenk&#xe4;&#xe4;n v&#xe4;ltt&#xe4;m&#xe4;tt&#xe4;) toteutetaan kirjoittamalla lomakeluokan sis&#xe4;&#xe4;n nimet&#xf6;n sis&#xe4;luokka, jossa tapahtumank&#xe4;sittelij&#xe4; on"/>
<node TEXT="Raskasta, monimutkaista ja monipuolista verrattuna funktio-osoitinpohjaiseen malliin">
<node TEXT="Moni eri tapahtumank&#xe4;sittelij&#xe4; voi rekister&#xf6;ity&#xe4; &quot;kuuntelemaan&quot; tietty&#xe4; komponenttia (vrt Delphin Message-tyyppiset metodit)"/>
<node TEXT="Sama olio voi kuunnella montaa eri tapahtumaa riippuen siit&#xe4;, mit&#xe4; rajapintoja se toteuttaa (jopa niin, ett&#xe4; sama olio on sek&#xe4; tapahtuman l&#xe4;hett&#xe4;j&#xe4; ja kuuntelija)"/>
</node>
</node>
</node>
<node TEXT="JavaBeans-komponenttimalli" FOLDED="true">
<node TEXT="Vastaa suurinpiirtein Borlandin Delphi/BCB-komponentteja ja Microsoftin ActiveX-komponentteja"/>
<node TEXT="JavaBeaneja voi kehitt&#xe4;&#xe4; &apos;visuaalisesti&apos;"/>
</node>
<node TEXT="Java-ty&#xf6;kalut" FOLDED="true">
<node TEXT="Komentorivi! java, javac, javadoc, jar"/>
<node TEXT="Borland JBuilder"/>
<node TEXT="NetBeans"/>
<node TEXT="Eclipse"/>
</node>
<node TEXT="Esimerkkiohjelmat" FOLDED="true">
<node TEXT="Virtaesimerkki"/>
<node TEXT="Autolaskuri"/>
<node TEXT="LaskuriBean"/>
<node TEXT="Socket-ohjelmointia"/>
</node>
</node>
<node TEXT="Hajautetut komponenttiarkkitehtuurit" FOLDED="true" POSITION="right">
<node TEXT="Materiaalia:">
<node LINK="http://my.execpc.com/~gopalan/misc/compare.html" TEXT="Vertaileva artikkeli: Gopalan Suresh Raj: A Detailed Comparison of CORBA, DCOM and Java/RMI"/>
<node LINK="http://people.cc.jyu.fi/~minurmin/gko/materiaali/jyucorba-2004.pdf" TEXT="Jonne Itkonen: CORBA"/>
<node TEXT="BCB Help: Developing Distributed applications, Writing CORBA Applications"/>
<node LINK="http://selene.lib.jyu.fi:8080/gradu/f/villvain.pdf" TEXT="Ville Vainio: Enterprise JavaBeans -komponenttimalli ja sen vaikutus ohjelmistonkehitykseen (TJT:n pro gradu -tutkielma)">
<edge WIDTH="thin"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node TEXT="Hajautetut komponenttiarkkitehtuurit mahdollistavat &quot;N-kerroksiset&quot;-sovellukset, jotka kootaan hajautetusti verkossa sijaitsevista palveluista"/>
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; yleisin arkkitehtuuri lienee kuitenkin 3-kerroksinen:">
<node TEXT="K&#xe4;ytt&#xf6;liittym&#xe4; asiakassovelluksessa, vaihtoehtoina esim." FOLDED="true">
<node TEXT="Perinteinen ty&#xf6;p&#xf6;yt&#xe4;sovellus"/>
<node TEXT="Java-sovelma tai ActiveX-kontrolli"/>
<node TEXT="Web-k&#xe4;ytt&#xf6;liittym&#xe4; (web-palvelimesta riippuen esim. JSP- tai ASP- sivuja)"/>
</node>
<node TEXT="Sovelluslogiikka sovelluspalvelimella (middleware)" FOLDED="true">
<edge WIDTH="thin"/>
<font NAME="SansSerif" SIZE="12"/>
<node TEXT="(Enterprise) JavaBeanseja, COM-komponentteja tai CORBA-objekteja sovelluspalvelimesta riippuen"/>
</node>
<node TEXT="Tietokanta tietokantapalvelimella" FOLDED="true">
<node TEXT="Tietokantapalvelimesta riippuen palvelimella saattaa olla her&#xe4;ttimi&#xe4; (triggers, tietokannan &quot;tapahtumakuuntelijoita&quot;) tai tallennettuja proseduureja, jotka sis&#xe4;lt&#xe4;v&#xe4;t tietokantaan liittyv&#xe4;&#xe4; koodia"/>
</node>
</node>
<node LINK="http://www.google.com/url?sa=U&amp;start=1&amp;q=http://www.corba.org/&amp;e=7317" TEXT="CORBA (Common Object Request Broker Architecture)">
<node TEXT="OMG:n (Object Management Group) m&#xe4;&#xe4;rittelem&#xe4; yleinen m&#xe4;&#xe4;ritys hajautettujen olioiden k&#xe4;ytt&#xf6;&#xf6;n">
<edge WIDTH="thin"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node TEXT="J&#xe4;rjestelm&#xe4;- ja kieliriippumaton">
<node TEXT="Runsaasti kaupallisia ja ei-kaupallisia CORBA-palvelintoteutuksia saatavilla"/>
</node>
<node TEXT="Esimerkki: Delphi/Corba-autolaskuri"/>
<node TEXT="Corba-projektin luonti Delphill&#xe4;/BCB Builderilla:">
<node TEXT="Visibroker Smart Agentin on oltava p&#xe4;&#xe4;ll&#xe4;"/>
<node TEXT="New-&gt;Other-&gt;Corba/Multitier-&gt;Corba client/server"/>
<node TEXT="Jos idl-tiedostot ovat valmiina, ne voi lis&#xe4;t&#xe4; wizardissa"/>
<node TEXT="Tallenna generoidut tiedostot"/>
<node TEXT="BCB:ss&#xe4; asiakassovelluksessa Corba-objektin saa k&#xe4;ytt&#xf6;&#xf6;n valitsemalla edit-valikosta use corba object..."/>
</node>
</node>
<node LINK="COM/DCOM/COM+ (Microsoft) &lt;http://www.microsoft.com/com/&gt; " TEXT="COM / DCOM / MTS / COM+ (Component Object Model)">
<node TEXT="Microsoftin komponenttimalli"/>
<node TEXT="Kieliriippumaton, periaatteessa my&#xf6;s k&#xe4;ytt&#xf6;j&#xe4;rjestelm&#xe4;riippumaton">
<node TEXT="K&#xe4;yt&#xf6;ss&#xe4; l&#xe4;hinn&#xe4; Windows-puolella">
<edge WIDTH="thin"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node TEXT="Win95:sta alkaen k&#xe4;ytt&#xf6;j&#xe4;rjestelm&#xe4; nojaa vahvasti COM-komponentteihin"/>
<node TEXT="Kaupallisia toteutuksia saatavissa my&#xf6;s muille j&#xe4;rjestelmille (kehitysv&#xe4;lineet? esim. kylix ei tue)"/>
</node>
</node>
<node LINK="Enterprise JavaBeans &lt;http://java.sun.com/products/ejb/index.jsp&gt; " TEXT="EJB (Enterprise JavaBeans)">
<node TEXT="Javan komponenttimalli hajautettuihin yrityssovelluksiin"/>
<node TEXT="J&#xe4;rjestelm&#xe4;riippumaton (Java)">
<node TEXT="Kaupallisia sovelluspalvelimia saatavilla runsaasti, ei-kaupallisista ainakin JBoss"/>
</node>
</node>
</node>
<node TEXT="Kertaus: makrokieli (edellinen luento...)" POSITION="left"/>
<node TEXT="Monikielist&#xe4;minen" FOLDED="true" POSITION="left">
<node TEXT="Yleisperiaate" FOLDED="true">
<node TEXT="Erotetaan ohjelmassa olevat tekstit koodista"/>
<node TEXT="Esim. jos ohjelman tekstit saadaan resurssitiedostoihin, tehd&#xe4;&#xe4;n monta resurssitiedostoa">
<node TEXT="Hankalasti yll&#xe4;pidett&#xe4;v&#xe4;&#xe4;, jos tehd&#xe4;&#xe4;n k&#xe4;sin"/>
<node TEXT="Muuttujat tekstiss&#xe4;?"/>
</node>
</node>
<node TEXT="VL:n k&#xe4;&#xe4;nn&#xf6;smakrot (C)" FOLDED="true">
<node TEXT="Periaate: pidet&#xe4;&#xe4;n erillisess&#xe4; taulukkotiedostossa k&#xe4;&#xe4;nn&#xf6;ksi&#xe4;">
<node TEXT="K&#xe4;&#xe4;nn&#xf6;stiedostoa voi t&#xe4;ydent&#xe4;&#xe4; erill&#xe4;&#xe4;n ohjelmasta (erityisesti: koodajan ei tarvitse tehd&#xe4; itse k&#xe4;&#xe4;nn&#xf6;ksi&#xe4;!)"/>
<node TEXT="Ohjelmassa tarvitaan jokaisen merkkijonokutsun yhteydess&#xe4; erillinen T-funktion/makron kutsu, joka hakee taulukosta mahdollisen k&#xe4;&#xe4;nn&#xf6;ksen"/>
<node TEXT="Muuttujat voidaan esitt&#xe4;&#xe4;&#xe4; printf-syntaksin mukaisesti formatoituina"/>
<node TEXT="Hankalahko laajoille tekstikappaleille (koko tekstikappale toimii hakuavaimena)"/>
<node TEXT="Ongelma: saman tekstin esiintyminen eri asiayhteyksiss&#xe4;, jolloin vaatisi erilaisia k&#xe4;&#xe4;nn&#xf6;ksi&#xe4;..."/>
</node>
<node TEXT="Esimerkki: vaihtaja (ks. MDI -esimerkit: multiwin/vaihtajasw/ ja ali/)" FOLDED="true">
<node TEXT="Ks. erityisesti ali/language.c ja ali/transdlg.c"/>
</node>
<node TEXT="Vastaava k&#xe4;&#xe4;nn&#xf6;smekanismi k&#xe4;yt&#xf6;ss&#xe4; my&#xf6;s Korppi-j&#xe4;rjestelm&#xe4;ss&#xe4;!"/>
</node>
<node TEXT="ResurssiDLL-tiedostot" FOLDED="true">
<node TEXT="Materiaalia: Delphi help, Programming with Delphi, resource DLLs, creating"/>
<node TEXT="Esimerkki: multilaskurin monikielist&#xe4;minen (ks. ohjeet l&#xe4;hdekoodissa)"/>
<node TEXT="Translation repository on tietovarasto automaattisesti teht&#xe4;vi&#xe4; k&#xe4;&#xe4;nn&#xf6;ksi&#xe4; varten"/>
</node>
<node TEXT="Innoview Multilizer" FOLDED="true">
<node TEXT="Kaupallinen k&#xe4;&#xe4;nn&#xf6;skomponentti Delphille ja muihin ymp&#xe4;rist&#xf6;ihin"/>
<node LINK="http://www.multilizer.com/products/ml60_vcl.html" TEXT="30 pv&#xe4;n kokeiluversio (Multilizer for VCL) saatavilla Multilizerin sivuilta"/>
</node>
</node>
<node TEXT="Avustukset" FOLDED="true" POSITION="left">
<node TEXT="Materiaalia" FOLDED="true">
<node LINK="http://www.mit.jyu.fi/vesal/kurssit/winohj/html/winmon/m-6.htm" TEXT="Avustusten tekeminen RTF-tiedostojen avulla"/>
<node LINK="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/vsconHH1Start.asp" TEXT="Microsoft: Html Help 1.4 SDK"/>
</node>
<node TEXT="WinHelp-avustukset" FOLDED="true">
<node TEXT="K&#xe4;yt&#xf6;ss&#xe4; jo Win3:sta alkaen, Win95:ss&#xe4; hieman lis&#xe4;ominaisuuksia"/>
<node TEXT="Kehitysv&#xe4;line: Help Workshop, k&#xe4;&#xe4;nt&#xe4;&#xe4; RTF-tiedostoja avustustiedostoiksi"/>
<node TEXT="Huom. WinMonisteessa mainittu HC ei ole en&#xe4;&#xe4; k&#xe4;yt&#xf6;ss&#xe4; 32-bittisess&#xe4; Windowsissa. Korvaavat sovellukset HCW tai HCRTF, l&#xf6;ytyv&#xe4;t Delphin alihakemistosta Help\Tools\">
<edge WIDTH="thin"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node TEXT="Teknisesti vanhentunut (Html Help korvannut, lis&#xe4;ksi .NET-ymp&#xe4;rist&#xf6;ss&#xe4; on taas uusi avustusj&#xe4;rjestelm&#xe4;ns&#xe4;), mutta monet sovellukset k&#xe4;ytt&#xe4;v&#xe4;t edelleen"/>
<node TEXT="Borlandin kehittimet tukevat kontekstiriippuvaisia WinHelp-avustuksia ohjelmissa"/>
<node LINK="http://matti.erkama.net/masehelp/" TEXT="MaseHelp">
<node TEXT="Helppok&#xe4;ytt&#xf6;inen ja ilmainen sovellus WinHelp-avustuksien tekoon"/>
<node TEXT="Ongelmana on, ett&#xe4; avustusta ei saa ohjelmasta ulos RTF-muodossa (?)"/>
</node>
<node TEXT="Word + VL:n makrot">
<node TEXT="K&#xe4;sitell&#xe4;&#xe4;n p&#xe4;&#xe4;teohjauksissa..."/>
<node TEXT="Helppej&#xe4; ja erityisesti hyperlinkkej&#xe4; tehdess&#xe4; muotoilumerkit kannattaa pit&#xe4;&#xe4; n&#xe4;kyviss&#xe4; (show hidden text)"/>
</node>
<node TEXT="Esimerkki WinHelp-projektista: mfc/vaihtaja"/>
<node TEXT="K&#xe4;ytt&#xf6; Delphist&#xe4;: Delphi Help: Help files for components">
<node TEXT="Jokaisella Delphi-komponentilla on ominaisuudet HelpKeyword ja HelpContext, johon voi liitt&#xe4;&#xe4; sopivan avainsanan tai koodin"/>
<node TEXT="Avustuksen saa suoraan esille kutsumalla Applicationin metodeja HelpJump tai HelpContext"/>
<node TEXT="Applicationin HelpFile-propertyn t&#xe4;ytyy olla asetettuna (esim. projektin optioista)"/>
</node>
</node>
<node TEXT="HtmlHelp-avustukset" FOLDED="true">
<node TEXT="Windows 98:sta eteenp&#xe4;in standardi avustusformaatti"/>
<node TEXT="HtmlHelpin k&#xe4;ytt&#xf6; perustuu samannimiseen WinAPI-kutsuun"/>
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; yhteen pakattu joukko Html-tiedostoja (CHM, Compressed Html), n&#xe4;yttimen pohjana Internet Explorer"/>
<node TEXT="Aiheet (topics) ovat yksitt&#xe4;isi&#xe4; HTML-tiedostoja, joihin viitataan nimell&#xe4; ja suhteellisella polulla"/>
<node TEXT="Kehitysv&#xe4;line: Html Help Workshop"/>
<node TEXT="Delphiss&#xe4; ei ole sis&#xe4;&#xe4;nrakennettua tukea HtmlHelpiin, mutta API-headerit ja k&#xe4;ytt&#xf6;esimerkkej&#xe4; l&#xf6;ytyy verkosta">
<node LINK="ftp://delphi-jedi.org/api/HtmlHlp.zip" TEXT="JEDI-projektin API-k&#xe4;&#xe4;nn&#xf6;s+esimerkkej&#xe4;">
<node TEXT="Ks. Commands-esimerkki konteksiavun k&#xe4;yt&#xf6;st&#xe4;"/>
<node TEXT="Vaatii Application.onhelp-tapahtuman uudelleenohjauksen"/>
</node>
<node LINK="http://www.helpware.net/delphi/" TEXT="Robert Chandles: Delphi HH Kit, ohjeita"/>
</node>
</node>
</node>
<node TEXT="Testaus ja debuggaus" FOLDED="true" POSITION="left">
<node LINK="http://dunit.sourceforge.net/" TEXT="DUnit" FOLDED="true">
<node TEXT="Ty&#xf6;kalu yksikk&#xf6;testaukseen">
<node TEXT="Versioita saatavilla eri kielille, tunnetuin ja alkuper&#xe4;inen Javan JUnit"/>
</node>
<node TEXT="Idea: jokaista luokkaa varten kirjoitetaan TestCase-luokasta peritty testiluokka, joka sis&#xe4;lt&#xe4;&#xe4; edelleen testimetodeja, joilla voidaan testata kohdeluokan metodien toimivuus"/>
<node TEXT="Projektia varten kirjoitetut testitapaukset voidaan ajaa kerralla, jolloin virheist&#xe4; voidaan raportoida automaattisesti"/>
</node>
<node TEXT="Muistivuotojen tarkastajat" FOLDED="true">
<node TEXT="V&#xc4;LTT&#xc4;M&#xc4;T&#xd6;N, jos sovellus aiotaan tehd&#xe4; tuotantok&#xe4;ytt&#xf6;&#xf6;n"/>
<node TEXT="C++ Builder: CodeGuard"/>
<node TEXT="Visual C++ ja muut yleisimm&#xe4;t sovelluskehittimet: BoundsChecker (kaupallinen) "/>
<node TEXT="Delphin muistity&#xf6;kaluja">
<node LINK="http://bdn.borland.com/article/0,1410,28344,00.html" TEXT="KMM ja MemProof (BDN-artikkeli)"/>
<node LINK="http://v.mahon.free.fr/pro/freeware/memcheck/" TEXT="MemCheck"/>
</node>
</node>
</node>
</node>
</map>
