M 151ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 V San Franciscu je od 8. do 11. maja potekala konferenca JavaOne. To je bila že 12. konferenca pod okriljem pod- jetja Sun. Glavno sporočilo letošnje konference je bilo: “Odprimo vrata novim možnostim” in res se je veliko govorilo o odprtokodnih rešitvah pri razvoju javinega okolja, ki skupaj s skriptnimi jeziki, odprtokodnimi pro- gramskimi rešitvami ter drugimi orodji Web 2.0 prevze- ma vodilno vlogo pri razvoju nove generacije aplikacij. Konferenca je impresivna zaradi števila ljudi, ki se zbere- jo na enem mestu (več kot 15.000) in so tako ali drugače povezani z javino in drugimi spletnimi tehnologijami. Ob taki množici ljudi je seveda organizacija zelo zapletena, ki pa jo številno osebje izvaja zelo profesionalno, tako da se tudi novinec na konferenci počuti zelo domače. Podobno kot že prejšnje leto se je bilo treba tudi letos predhodno prijaviti na posamezna predavanja, s čimer so si organizatorji vsaj malo olajšali delo pri rezervaciji pre- davalnic. Številne dogodke na konferenci lahko v splošnem raz- delimo na: generalne dogodke, tehnične dogodke, labora- torije ter spremljajoči program (angl. births-of-feather), v katerega sodijo razne demonstracije, neformalni dogod- ki, razprave, okrogle mize ipd. Ob tem poteka še sejem, na katerem se predstavljajo številni ponudniki aplikacijskih rešitev, orodij in drugih tehnologij, ki uporabljajo javino razvojno okolje. Dan pred uradno konferenco je letos prvič potekal t. i. dan skupnosti (CommunityOne), kjer se je zbralo več kot 2500 razvijalcev, IT inženirjev in podjetnikov, ki so iz- menjevali tehnične informacije o odprtokodnih projektih. Predstavili so naslednje projekte: GlassFish, NetBeans, Linux vs. Solaris, OpenJDK/Mobile & Embedded, Web 2.0 in OpenSolaris. PROJEKT GLASSFISH Projekt GlassFish, ki je začel delovati pod okriljem pod- jetja Sun in katerega glavni namen je razvoj aplikacijske- ga strežnika v skladu s standardom Java EE, je v tem letu dobro zaživel. V tednu konference je bila predstavljena verzija beta (V2) in nekaj novosti, kot je izboljšanje tehnologije gruč, podpora tehnologiji JBI (Java Business Interface), povezljivost s tehnologijo WBIT (Web Servi- ces Interoperability technology). Poleg teh so opazne še nekatere izboljšave: možnost uporabe različnih uporab- niških profilov, varnost (tehnologija ECC in format JKS), spletni vsebnik je podprt s protokolom Apache, nov upo- rabniški vmesnik, podprt s tehnologijo AJAX, novosti pri specifikacijah (JSR 196, JSR 208, JSP, JAX-WS, JAXB …). Za GlassFish, V3, se napoveduje, da ne bo več izključno vezan na tehnologijo Java EE. OPENJDK/MOBILE&EMBEDDED Pred dobrega pol leta sta pod okriljem podjetja Sun začeli delovati spletni skupnosti OpenJDK in Mobile&Embed- ded. V teh skupnostih je mogoče sodelovati pri izpeljavi in vključevanju novih idej v javino razvojno okolje. Pri skupnosti OpenJDK gre za ideje v Java SE, medtem ko skupnost Mobile&Embedded temelji na Java ME. Upo- raba te kode je omogočena z uporabo licence GPL, V2 (General public license). Sun je v tem času skupnosti omogočil dostop do treh po- membnih programskih komponent (Java HotSpot techno- logy, Java Programming Language Compiler in JavaHelp Software). Preko projekta OpenJDK je tako razvijalcem omogočen dostop do prevajalnika, spoznavanje novih značilnosti jezika, spoznavanje izgradnje JVM (Virtual Machine), posredovanje idej za izboljšano arhitekturo JVM, iskanje napak … S temi odprtokodnimi projekti je tako omogočen vpliv na bodočo izvedbo JDK in s tem pomoč Sunu pri iskanju novih možnosti za razvoj jave. Na uvodnem generalnem predavanju, kjer vodilni Sunovi ljudje predstavljajo smernice razvoja javinega okolja, je Rich Green poudaril vlogo komunikacije kot gonila celo- tne človeške skupnosti. V zadnjem letu je bilo prodanih več kot pol milijona mobilnih telefonov, da je razmerje v odnosu do osebnih računalnikov že 20 : 1. KONFERENCA JAVAONE 2007 DOI:10.3359/oz0703151 152 ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 V ta namen je predstavil novo “družino” proizvodov Java FX, v katero spadata JavaFX Script in JavaFX Mobile. JavaFX Script je skriptni jezik za enostavno kreiranje grafič- nih vmesnikov (GUI), medtem ko JavaFX Mobile omogoča boljšo uporabo javinih aplikacij na mobilnih telefonih. Prav tako je poudaril vlogo razvojnega orodja NetBeans IDE 6.0, ki vsebuje številne novosti:dinamično skrip- tiranje z javino tehnologijo, JRuby 1.0 in tehnologijo JavaScript, kreator za kreiranje grafičnih vmesnikov (GUI), ki zelo poenostavlja kreiranje dinamičnih upo- rabniških aplikacij, nov izboljšan urejevalnik in številni paketi, ki olajšajo delo pri razvoju aplikacij. Prav tako to orodje omogoča povezljivost z odprtokodno verzijo Jave OpenJDK. Dejal je, da je to orodje v tem trenutku primarno pri razvoju aplikacij za mobilne telefone, ki so bili nasploh v središču te uvodne predstavitve. Na preostalih generalnih predavanjih so podjetja Oracle, Intel in Motorola predstavila svoje izkušnje pri uporabi javi- nega razvojnega okolja, medtem ko je zadnji dan konference James Gosling že tradicionalno podeljeval nagrade v “pred- stavitvi igrač”, ki temeljijo na javinem okolju. V nadaljevanju poročila so predstavljene nekatere podro- bnosti, novosti in zanimivosti s predavanj, ki sva jih na tej konferenci obiskovala. JAVA FX JavaFX predstavlja družino proizvodov, ki temeljijo na računalniškem okolju jave in omogočajo njeno uporabo v mobilnih napravah, pri kreiranju namizij in grafičnih vmesnikov (GUI-jev), pri TV-komunikatorjih, tehnologiji Blu-ray ipd. Namen JaveFX je olajšanje razvoja aplikacij za te naprave in tehnologije. V to družino spadata proiz- voda JavaFX Script in JavaFX Mobile. JavaFX Script je skriptni jezik, ki omogoča razvijalcem kreiranje zmog- ljivejših in uporabnejših aplikacij ter storitev za mobilne naprave, diske Blu-ray, TV-komunikatorje in namizja. JavaFX Script uporablja sintakso za specifikacijo GUI- komponent, tako da je koda “bližje” grafičnemu vmes- niku, prav tako omogoča enostavnejšo povezavo med podatki iz aplikacije in uporabniškim vmesnikom, mo- goče ga je vključiti v različna razvojna okolja (Eclipse, NetBeans …), je statično tipiziran in strukturiran, tako da omogoča kreiranje zelo velikih aplikacij, prav tako omo- goča kreiranje zelo kompleksnih grafičnih vmesnikov in prijaznejšo uporabo komponent Swing. V tem obdobju je preizkušanje kode v fazi alfa, je pa na voljo na spletišču java.net in bo izdana z dovoljenjem GPL 2. JavaFX Mobile je ime za programsko opremo (v javinem okolju), ki podpira novo generacijo mobilnih naprav in zaobsega ogrodja, ki predstavljajo grafično, komunikacij- sko in multimedijsko podporo tem napravam. Prav tako vključuje shranjevanje podatkov in programsko pod- poro telefoniji. Ta programska oprema je dostopna preko vgrajenih programskih razredov (Java API). Ideja JavaFX Mobile je pocenitev mobilnih naprav, kar bo omogočilo večjo dostopnost teh naprav in s tem večjo komunikacijo med ljudmi. TEHNOLOGIJA DESKTOP JAVA Na začetku predavanja so predstavili nekaj številk, ki govorijo o priljubljenosti Jave Desktop in javine tehno- logije nasploh. Od januarja 2007 je bilo izvedenih več kot 50 milijonov namestitev javinega okolja, tako da ni presenetljivo, da že več kot 77 odstotkov vseh osebnih računalnikov uporablja javino tehnologijo. Zato je eden izmed ciljev nove družine JavaFX še bolj pri- bližati to tehnologijo spletnim in grafičnim razvijalcem. JavaFX Script tako omogoča vljučitev različnih javinih raz- redov, kreiranje novih objektov, uporabo njihovih metod in javinih vmesnikov. Prav to dela komponente Swing in Java- 2D prijaznejše in s tem lažje za kreiranje GUI-aplikacij. Na področju tehnologije JavaFX Mobile pa Sun načrtuje razvoj Tabela 1: Odprtokodne rešitve Slika 1: JavaFX Script POROČILO M T 153ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 namizja Desktop API, medtem ko prva verzija JavaFX vse- buje Swing in 2D komponente za mobilno tehnologijo. Java SE, na kateri temelji JavaFX, pa za razvoj namiz- ja omogoča: dostop do namizja API, uporabo razredov TrayIcon, izboljšan Look and Feel, podporo za Windows Visto, razred SwingWorker, projekt Matisse in Group La- yout, sortiranje in filtriranje jTable, LCD-tekst, lastnosti Desktop AA text, Splash Screen … Seveda pa še vedno obstajajo nekateri problemi, ki se jih razvijalci pri podjetju Sun zavedajo in se z njimi intenziv- no ukvarjajo. Nekaj problemov: zagonski čas, namestit- veni čas in procesi, detektiranje JRE. Rešitve teh problemov bodo predstavljene v moderni- zirani verziji Jave SE 6, ki bo vsebovala: QuickStarter, Kernel, Deployment Toolkit, grafični pospeševalnik za Windows in Nimbus Look&Feel. V prihodnosti se prav tako pričakuje vgradnja 3D API-ja v javino okolje. RUBY ON RAILS Ruby je dinamično tipiziran objektno orientiran odprto- kodni programski jezik, napisan v programskem jeziku C, ki teži k čim večji enostavnosti, večji produktivnosti in zabavi pri samem delu. Ruby on Rails je odprtokodno spletno ogrodje (napisano v jeziku ruby), pri katerem se teži k enostavnemu in hitremu programiranju splet- nih aplikacij, neponavljanju kode (DRY), integriranemu testiranju, kar so tudi glavne prednosti pred razvojem aplikacij v javinem razvojnem okolju. Prav tako je značil- na hitra rast skupnosti razvijalcev, kar seveda posledično prinese večjo bazo uporabnih primerov. Jezik ruby v javinem okolju se imenuje JRuby, tako da je omogočena tudi povezava Ruby on Rails z javino tehno- logijo. S tem je omogočen dostop do javinih aplikacijskih strežnikov, širša in skalabilnejša podpora bazam, enostav- nejša povezljivost ogrodja s celotno arhitekturo, povezlji- vost z javinimi knjižnicami in servisi … Skupaj s tehnologijo Java EE je tako omogočen dostop do baz, dostop do javinih API-jev in drugih tehnologij: Java Persistence API (JPA), Java Management Extensions (JMX), Enterprise JavaBeans (EJB), Java Message Servi- ce (JMS), API ter tehnologije SOAP, WSDL in SOA. JAVA DB Na kratko bomo opisali bazo Java DB, njeno uporabo in nastavitve za boljše delovanje in predstavili izboljšave v novejši verziji. Java DB je odprtokodna relacijska baza,ki se razvija v skupnosti Apache Derby. Jedro baze temelji na entitetno- relacijski tehnologiji. Popolnoma je kompatibilna, razvita na tehnologiji java, skladno s standardoma JDBC in SQL. Vključena je v Javo JDK 6.0 in projekt GlassFish. Pod- prta je s programskimi orodji NetBeans, Sun Java Studio Enterprise, Eclipse … Zelo primerna je za javine apli- kacije, ki potrebujejo izmenjavo podatkov z relacijskimi podatkovnimi bazami. Podpira uporabo večjega števila uporabnikov za delo s podatki. Poskrbljeno je za varnost (angl. data encrypton, client authentication). Baza pod- pira vgrajeno (angl. embedded) arhitekturo in arhitekturo odjemalec–strežnik (angl. Client–Server), kar prikazujeta slika 2 in slika 3. Pravilni pristopi pri uporabi baze Java DB zagotavljajo optimalno delovanje baze. Ti pristopi so: 1. Za uporabnikove podatke in log-podatke je treba upo- rabiti dva fizična diska. S tem se poveča propustnost za dobrih 20 odstotkov. Slika2: Prikaz arhitekture z vgrajeno bazo Java DB Slika 3: Prikaz arhitekture odjemalec–strežnik POROČILO 154 ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 2. Uporaba večjega pomnilnika za pogosteje uporabljene podatke dodobra poveča prepustnost. Slika 4 prikazu- je prepustnost v odvisnosti od velikosti pomnilnika. 3. Zaželena je uporaba Embedded Java DB, ker doseže- mo bolj optimalno delovanje relacijske podatkovne baze. Zmanjšamo medprocesorske in strežniške ko- munikacije. Zmanjšamo obremenjevanje procesorja in razbremenimo strojno opremo. S tem posredno do- sežemo boljšo skalabilnost (vse na enem računalniku). Če primerjamo Embedded Java DB in Client–Server Java DB, dosežemo z Embedded Java DB za dobrih 20 odstotkov boljšo prepustnost in za slabih 50 odstot- kov manjšo obremenjenost procesorja. 4. Pri izvajanju vprašalnih stavkov je primernejša upo- raba pripravljenih stavkov kot pa hkratno izdelovanje vprašalnih stavkov. S tem pristopom dodobra poveča- mo prepustnost podatkovne baze in zmanjšamo obre- menitev procesorja. 5. Za iskanje podatkov v podatkovni bazi je primerno uporabiti indekse, s katerimi lahko omogočimo hitrej- še iskanje. Z uporabo indeksov bomo tako pospešili delovanje podatkovne baze. Ravno tako je priporočlji- vo zapiranje objektov JDBC po njihovi uporabi. Za- želena je tudi uporaba transakcij in ne uporaba avto- matskega potrjevanja transakcij (angl. auto-commit). V novejši verziji Java DB, 10.3 alpha, so dodane nasled- nje novosti: 1. V različici z vgrajeno bazo: • zmanjšana obremenitev procesorja, • zmanjšana obremenitev diska pri zapisovanju log-podatkov, • od 30–50 odstotkov povečana prepustnost. 2. V različici odjemalec–strežnik: • izboljšan tok za LOB-podatke. 3. Optimizacija SQL-a: • izboljšana optimizacija. Na sliki 5 dva grafa prikazujeta različne baze med sabo. S pomočjo Java DB je zagotovljen dostop do podatkov- nih baz z uporabo jave. Baza je vključena v Java EE in tako ni treba več uporabljati kakšne druge podatkovne baze, če želimo shranjevati podatke. ECC ECC – Elliptic Curve Cryptography je kriptografski sistem z javnim ključem (podobno kot RSA), ki temelji na diskret- nem logaritmu eliptičnih krivulj. Reševanje teh logaritmov je zahtevnejše kot reševanje cikličnih grup, ki temeljijo na celih številih, so pa lahko ključi pri šifriranju z eliptično krivuljo krajši kot pri sistemih, ki temeljijo na celih številih. Poenostavljeno povedano: obstaja matematični problem, da imamo eliptično krivuljo, na kateri poznamo točki P in Q in treba je najti koeficient k, tako da velja Q = kP. Krivulje (vseh 25) so standardizirane s standardi NIST, SECG in ANSI, medtem ko algoritme označujemo z zna- kovnimi nizi. Več o tem je mogoče prebrati v dokumentu RFC 4492 (http://www.faqs.org/rfcs/rfc4492.html). V tem trenutku ni preplaha za tehnologijo ECC, vendar pa se pričakuje, da bodo v prihodnosti na področju proto- kola SSL prevladale rešitve, ki bodo temeljile na tehnolo- giji ECC. Slika 4: Prikaz pretoka pri uporabi večjega pomnilnika Slika 5: Prikaz pretoka pri uporabi novejše verzije Java DB, 10.3 alpha Tabela 2: Primerjava velikosti ključev ob enaki varnosti POROČILO M T 155ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 SSO SSO – Single Sign-on predstavlja obliko enovite pri- jave in uporabe aplikacij. Prednosti tehnologije SSO so: enkratna prijava za dostop do različnih virov, večja produktivnost uporabnikov in razvijalcev, enostavnejša administracija. Seveda pa imajo rešitve SSO tudi svoje slabosti: potencialni vdor v sistem je tako z enkratno pri- javo bistveno olajšan, obstajajo resne težave pri vgradnji rešitev SSO v obstoječe aplikacije. Obstajajo tri glavne odprtokodne oblike rešitev SSO: OpenSSO, JOSSO in CAS. OpenSSO OpenSSO – Open Web Single Sign On je odprtokodni projekt, ki ga spodbuja Sun. Ta skrbi za infrastukturo javnodostopnih identifikacijskih servisov za spletne apli- kacije. JOSSO JOSSO – Java Open Single Sign On sloni na Java Aut- hentication and Authorization Service (JAAS), uporablja spletni strežnik z Apache Axis ter standarde Apache Struts ter JavaServer Page technology(JSP). Prav tako omogoča uporabo komponent Reverse Proxy, ki omogočajo n-sloj- no konfiguracijo SSO. Ta uporablja različne strategije za uporabo in shranjevanje uporabniških informacij, overitev v LDAP, podatkovnih baz, XML-datotek … JOSSO je mogoče povezati z aplikacijskima strežnikoma TomCat in JBoss, seveda je pa z njim mogoče upravljati javine spletne aplikacije. CAS CAS – Central Authentication Service je odprt in dobro dokumentiran protokol, ki ga je mogoče povezati z javino tehnologijo, kot je .NET, PHP, Perl, Apache, uPortal … Ta protokol je tudi podprt z dokumentacijo, saj skupnost uporabnikov hitro narašča. Vsi trije protokoli so odprtokodni, ideje in rešitve je mogoče najti na spletnih straneh projektov,1 kjer je tudi urejena dokumentacija, uporabniški forumi in seznami e-naslovov uporabnikov. SWING Z UPORABO VE^NITNOSTI S pomočjo večnitnosti postanejo aplikacije Swing dovzet- ne za različne akcije. Slika 6: Arhitektura OpenSSO Slika 7: Arhitektura JOSSO Slika 8: Arhitektura CAS POROČILO 156 ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 Uporabnika je treba informirati o izvajanju akcije, ki traja dalj časa. V takih primerih je zelo uporabno, da se za izvajanje akcije uporabi nova nit. Naslednje slike pri- kazujejo primere, kakšna je videti pravilno zastavljena aplikacija. Slika 9 prikazuje okno pred akcijo Fetch, ki potrebuje za svojo izvedbo dosti časa. Ko pritisnemo na tipko Fetch, se začne akcija izvajati. To zamrzne okno, kar prikazuje slika 10. V tem času uporabnik ne ve, kaj se s sistemom dogaja. V tem primeru bi bilo zelo koristno, če bi uporab- niku prikazovali potek opravljanja različnih akcij, ki se v tem času izvajajo. Zato je primerna uporaba aplikacije, ki je dovzetna za različne akcije. To lahko naredimo s pomočjo večnitnosti. Slika 11 prikazuje okno, ki uporablja večnitnost aplikaci- je Swing. Na tak način lahko dosežemo, da je uporabnik neprestano obveščen o delovanju sistema. Tako bo upo- rabnik ves čas vedel, kaj se s sistemom dogaja. V Javi 6 so ponudili razred SwingWorker, ki nam omogo- ča enostavno izgradnjo takšnega mehanizma. SwingWorker je abstrakten razred, ki ga je treba pred uporabo seveda uvesti. Pri SwingWorker je treba definirati generična tipa , pri čemer T predstavlja rezultat, ki ga SwingWorker vrne, V pa vmesne rezultate. Zelo pomembna metoda v SwingWorker-ju je metoda “doInBackground()”. V tej metodi je treba definirati vse akcije, ki se dogajajo v ozadju. S pomočjo metode “execute()” se zažene nit za SwingWorker. SwingWorker ravno tako zažene metodo “process()” in “done()”, s kate- rima se lahko kontrolirajo različne akcije. Primer na sliki 12 prikazuje uporabo vseh pomembnejših metod za SwingWorker. Program ne izvaja kakšnih po- membnejših funkcij, preprosto zažene kratko metodo, ki ima vlogo pri pisanju na konzolo in pisanju sporočila v Slika 9: Prikaz okna pred akcijo Fetch Slika 10: Prikaz okna po akciji Fetch po nekem času Slika 11: Prikaz okna po akciji Fetch po nekem času Slika 12: Prikaz primera programa za SwingWorker POROČILO M T 157ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 grafičnem vmesniku JTextField. Grafični vmesnik prika- zuje slika 13. Ob pritisku na tipko Pause se zažene SwingWorker z metodo “execute()”. Zažene se dodatna nit, v kateri se iz- vajajo akcije. Istočasno lahko spreminjamo sličico s tip- kama Naprej in Nazaj. V našem primeru se izvaja akcija v metodi “pause(this)”, ki je prikazana na sliki 13. Po končanem izvajanju se še izvede metoda “done()” in nato se še ustavi izvajanje dodatne niti. JAVA RTS V nadaljevanju bomo opisali, kako se Java RTS Real- Time System uporablja v časovno realnih sistemih v kombinaciji z operacijskim sistemom Solaris “real time”. Spregovorili bomo tudi nekaj besed o sami filozofiji ča- sovno realnih sistemov. Pri sistemih, ki se morajo odvijati v realnem času, večina pomisli, da se mora neka akcija zgoditi zelo hitro. Hkrati povežemo zelo hitre akcije z zelo zmogljivimi računal- niki. V realnosti pa temu ni tako. Pri sistemih v realnem času govorimo o akcijah, ki se bodo zgodile v vnaprej določenem in znanem času. Čas, v katerem se bodo akcije zgodile, je ravno tako pomemben, kot logični rezultat te akcije. Razmišljanje, da se mora neka akcija izvesti izred- no hitro, je napačna. Na tem mestu se ponudi tudi vprašanje, zakaj se mora Real-Time System integrirati v javo. Predvsem zaradi enostavnosti, saj želimo večino stvari napisati v program- skem jeziku, ki je znan, enostaven, na visokem nivoju in napreden. V primerjavi s programskim jezikom, v kate- rem se programira na nižjem nivoju, je takšen nov kon- cept veliko lažji in preglednejši. Ravno tako ne potrebu- jemo dodatnega človeka, ki bo pisal kodo v programskem jeziku na nižjem nivoju. Java RTS Real-Time System se lahko uporablja v vojski, telekomunikacijah, bankah in industriji. V vseh teh pano- gah zadosti vsem pogojem sistemov, ki morajo delovati v realnem času. Za Java RTS Real-Time System je definiran standard JSR001, ki natančno definira obnašanje jave v sistemu z realnim časom. Java RTS 2.0 Real-Time System je imple- mentirana v skladu z JSR001 in bazira na javinem okolju Java SE 5. Deluje na operacijskem sistemu Sun Solaris, tehnologiji SPARC in družini procesorjev x86/x64. Seve- da mora zaradi zahteve realnega časa operacijski sistem Sun Solaris omogočati funkcije realnega časa. Poleg Java RTS Real-Time System je vključen tudi inovativni Real- Time Garbage Collector. Java RTS 2.0 deluje v enostav- nem sistemu z eno ploščo in v kompleksnem strežniškem sistemu. V naslednjih treh poglavjih bomo na kratko predstavili, kako se morajo sistemi v realnem času obnašati. OBRAVNAVANJE NITI Predpostavimo, da imamo tri naloge in naslednje pogoje: • nizka prioriteta, • srednja prioriteta, zažene se 5 sekund pozneje, • visoka prioriteta, zažene se 5 sekund pozneje, • vsaka naloga potrebuje 20 sekund za svoje delovanje, • na razpolago je samo en procesor. Na naslednji sliki bo prikazano časovno delovanje vsake naloge. Slika 13: Prikaz grafičnega vmesnika Slika 14: Prikaz metode “pause()” Slika 15: Prikaz treh nalog, ki se prepletajo POROČILO 158 ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 Iz slike 15 je lepo razvidno, da je visoko prioritetna na- loga upočasnjena z nizko prioritetno nalogo. Pravilno izvajanje takšnih nalog bi bilo takšno, da bi se naloga z visoko prioriteto izvedla prva, nato pa bi se izvedle po prioriteti vse preostale naloge. Pri zamenjavi določenih razredov, ki upoštevajo izvaja- nje prioritetnih nalog, se izvajanje nalog spremeni. To je vidno na sliki 16. Iz slike 15 in slike 17 je vidna razlika v izvajanju prioritetnih nalog. Po teh spremembah v programu se bo izvajanje nalog iz- vajalo na naslednji način. UPRAVLJANJE ASINHRONIH DOGOD- KOV Večino obstoječih fizičnih sistemov ima dva načina asin- hronega obnašanja: • časovno proženje, • dogodkovno proženje. Koncept RTSJ ima naslednji način obnašanja: • za en dogodek se lahko uporabi več upravljavcev, • izvajanje logike je razporejeno in dodeljeno več upravljavcem. Slika 18 prikazuje filozofijo RTS pri upravljanju asinhro- nih dogodkov. Ko se v izvajanju sistema pojavi neki dogodek, se vsi pri- padajoči upravljavci sprostijo. Dogodki se začnejo nato izvajati glede na upravljavčeve parametre. To delovanje prikazuje slika 19. V Java SE RTS 2.0 lahko takšno izvajanje omogoča raz- red AsyncEventHandler. Za ta razred obstaja tudi družina razredov, ki izpolnjujejo še razne dodatne zahteve. PERIODI^NO IZVAJANJE Uporablja se predvsem za namene regulacij (closed-loop, PID controlers). Periodično izvajanje prikazuje slika 20. Slika 16: Prikaz sprememb v programu Slika 17: Prikaz treh nalog, ki se prepletajo, v prioritet- nem načinu delovanja Slika 18: Asinhrono izvajanje v javinem okolju Slika 19: Prikaz koncepta “sprôsti in začni izvajati” POROČILO M T 159ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 Periodično izvajanje nadzorujemo s pomočjo razreda PeriodicParameters (start, period). Java RTS ima vgraje- no periodično izvajanje ter izvajanje spremljanja in nad- zorovanja (angl. monitoring). Filozofijo le-tega prikazuje slika 21. Periodi se določi končni rok. Če se določena naloga iz- vaja predolgo in se zastavljeni rok prekorači, se aktivira DeadlineMiss. Nato se morajo izvesti določene akcije. DeadlineMiss se določi na naslednji način. Kot smo že omenili, sta za sistem v realnem času po- membna nadzor in čas. Opisali smo nekaj mehanizmov, ki nam to omogočajo. Z njihovo pomočjo je mogoče iz- vesti sistem, ki bo zanesljivo deloval v realnem času. Za pravilno izvajanje je obvezna uporaba operacijskega si- stema, ki izvaja funkcije v realnem času, kot je na primer Sun RT-Solaris. Opomba 1 Spletna stran OpenSSO im naslov https://opensso.dev.java.net/; JOSSO http://www.josso.org/ in CAS: http://www.ja-sig.org/ products/cas/. Anton Zorko, Martin Kostanjevec Slika 20: Prikaz periodičnega izvajanja Slika21: Prikaz filozofije spremljanja in nadzorovanja Slika 22: Prikaz, kako se določi upravljavec napak pri prekoračitvi roka POROČILO