Simulator izvajanja javanske zložne kode

Velikost: px
Začni prikazovanje s strani:

Download "Simulator izvajanja javanske zložne kode"

Transkripcija

1 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matevž Fabjančič Simulator izvajanja javanske zložne kode DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA Mentor: doc. dr. Tomaž Dobravec Ljubljana, 2018

2 Copyright. Rezultati diplomske naloge so intelektualna lastnina avtorja in Fakultete za računalništvo in informatiko Univerze v Ljubljani. Za objavo in koriščenje rezultatov diplomske naloge je potrebno pisno privoljenje avtorja, Fakultete za računalništvo in informatiko ter mentorja. Besedilo je oblikovano z urejevalnikom besedil L A TEX.

3 Fakulteta za računalništvo in informatiko izdaja naslednjo nalogo: Simulator izvajanja javanske zložne kode: V okviru diplomskega dela izdelajte didaktični pripomoček, ki bo služil kot simulator izvajanja javanske zložne kode. Med obstoječimi odprtokodnimi javanskimi navideznimi stroji izberite tistega, ki ga boste najlažje razširili, in mu dodajte zahtevano funkcionalnost. Vaš program naj omogoča prikaz vseh ukazov trenutne metode, med katerimi naj bo posebej izpostavljen trenutno izvajani ukaz. Poleg tega naj program prikazuje tudi vrednosti lokalnih spremenljivk ter spominskih lokacij na skladu. V primeru izvajanja večnitnega programa naj vaš program za prikaz uporabi več oken.

4

5 Kazalo Povzetek Abstract 1 Uvod 1 2 Javanski navidezni stroj Arhitektura Razredna datoteka Zložna koda Opis delovanja PyJVM Zagon navideznega stroja Izvajanje ukazov Večnitnost v PyJVM Implementacija orodja pyjvmgui Izbira primerne implementacije javanskega navideznega stroja Implementacija potrebnih abstrakcij Implementacija grafičnega uporabniškega vmesnika Objava orodja na spletnem portalu PyPI Uporaba orodja pyjvmgui Orodje class2json Sklepne ugotovitve 35

6 Slike 37 Seznam izvlečkov programske kode 39 Literatura 41

7 Seznam uporabljenih kratic kratica angleško slovensko JVM java virtual machine javanski navidezni stroj JIT just in time [compilation] sprotno prevajanje FIFO first in first out prvi pride, prvi gre GUI graphical user interface grafični uporabniški vmesnik

8

9 Povzetek Naslov: Simulator izvajanja javanske zložne kode Avtor: Matevž Fabjančič Java je eden najbolj razširjenih programskih jezikov. Študenti računalništva in programerji programski jezik Java dobro poznajo. Kljub zmogljivim prevajalnikom pa je koristno poznati tudi ozadje javanskega okolja, javanski navidezni stroj. To lahko trenutno najlažje spoznavamo z uporabo razhroščevalnikov. Da bi se lahko spustili v notranjost javanskega navideznega stroja, bomo v okviru te diplomske naloge izdelali simulator, ki bo jasno prikazoval notranje stanje javanskega navideznega stroja. Ključne besede: java, jvm, zložna koda.

10

11 Abstract Title: Java Bytecode Execution Simulator Author: Matevž Fabjančič Java is one of the most widely used programming languages used today. Even though programmers do not need to know the background of the Java Virtual Machine for their daily work, it is considered useful. To aid computer science students and programmers in the process of learning the fundamentals of the JVM, a visual simulator was created. The simulator displays internal components of the JVM and makes it easy to understand how bytecode and data flows through the JVM. Keywords: java, jvm, bytecode.

12

13 Poglavje 1 Uvod Trenutno na svetovnem spletu ni mogoče najti orodja, ki bi lahko služilo kot didaktični pripomoček pri poučevanju o delovanju javanskega navideznega stroja na nivoju zložne kode in omogočalo prikazovanje njegovega stanja. Orodje BCEL Class Construction Kit uporabniku omogoča pregledovanje in urejanje zložne kode, ne pa izvajanja programa [1]. Izvajanje zložne kode nam omogoča vtičnik za integrirano razvijalno okolje Eclipse, Bytecode Outline plugin for Eclipse [8]. Pomagamo si lahko z razhroščevalniki, ki jih ponujajo integrirana razvijalna okolja, kot sta orodji IntelliJ IDEA in Eclipse. Ker so ti razhroščevalniki narejeni za programerje z namenom, da bi jim olajšali razhroščevanje javanskih programov, nam ne nudijo pogleda v notranjost javanskega navideznega stroja. Spremenljivke in metode prikazujejo podobno, kot jih programer vidi v izvorni kodi programa. Razlog, da takšnih orodij ni, tiči tudi v dejstvu, da nam specifikacija javanskega navideznega stroja podaja zelo grob opis njegovega delovanja. Večino podrobnosti implementacije prepusti programerjem in načrtovalcem konkretne implementacije. Specifikacija javanskega navideznega stroja natančno opiše le stvari, kot so struktura razredne datoteke in učinki ukazov zložne kode. Ostale podrobnosti delovanja konkretne implementacije javanskega navideznega stroja so opisane v tem diplomskem delu. 1

14 2 Matevž Fabjančič Cilj diplomske naloge je izdelati simulator, ki bo omogočal vpogled v izvajanje programov, napisanih v Javi. Ta bo služil kot didaktični pripomoček pri poučevanju delovanja javanskega navideznega stroja. Do uresničitve cilja bomo prišli s predelavo odprtokodne različice javanskega navideznega stroja, PyJVM. Izdelali bomo vmesnik, ki bo omogočal vpogled v osnovne komponente javanskega navideznega stroja. Te bomo nato uporabili za izdelavo uporabniškega vmesnika, ki po prikazoval podatke o trenutnem stanju in omogočal premikanje po zložni kodi. Delovanje simulatorja bomo preizkusili z izvajanjem in opazovanjem delovanja preprostih programov. Pri testiranju bomo pozorni tako na rezultate testnih programov kot tudi na stanja notranjih komponent javanskega navideznega stroja. Pomembno bo tudi testiranje uporabniškega vmesnika. Čeprav uporabniška izkušnja ne bo v ospredju, bo moral biti uporabniški vmesnik kar se da uporabniku prijazen. Končano orodje bo objavljeno na spletu in prosto dostopno.

15 Poglavje 2 Javanski navidezni stroj Programski jezik Java in z njim javanski navidezni stroj sta bila ustvarjena z namenom, da bi lahko programerji pisali programe, ki bi bili enostavno prenosljivi med računalniškimi arhitekturami. Da bi to omogočili, so razvijalci razvili navidezni stroj, ki različne računalniške arhitekture pripelje na isti nivo na nivo, ki omogoča, da na njem izvajamo programe, prevedene za javanski navidezni stroj. Trenutno aktualna različica javanskega navideznega stroja je različica 10, ki je izšla februarja To poglavje je napisano po specifikaciji javanskega navideznega stroja sedme različice. Razlog je uporaba implementacije PyJVM, ki ne podpira novejših različic Jave [11]. 2.1 Arhitektura Za potrebe tega diplomskega dela moramo poznati nekatere notranje komponente javanskega navideznega stroja. Javanski navidezni stroj je skladovni računalnik. Vsaki niti navideznega stroja pripada sklad, na katerem se nahajajo klicni zapisi metod. Za pomikanje po zložni vsaka nit uporablja svoj programski števec. Po specifikaciji je to edini register javanskega navideznega stroja [7], implementacije pa lahko dodajo tudi druge registre [4]. 3

16 4 Matevž Fabjančič Klicni zapisi metod hranijo vrednosti argumentov in lokalnih spremenljivk neke metode. Na nivoju zložne kode med tema dvema tipoma spremenljivk ne ločujemo. Klicni zapisi vsebujejo tudi operandni sklad, nad katerim se izvajajo računske operacije. Vsi elementi operandnega sklada imajo velikost ene pomnilniške besede. Preko klicnih zapisov se prenašajo tudi rezultati metod. Ob klicu metode se na vrhu sklada doda nov klicni zapis, ob zaključku metode pa se njen klicni zapis izbriše [7]. Različne implementacije javanskega navideznega stroja uporabljajo mnoge optimizacije, kar hitrost programov, ki tečejo na javanskih navideznih strojih, približa hitrosti programov, ki tečejo neposredno na procesorju. Eden najbolj razširjenih pristopov je uporaba prevajalnika JIT, ki s prevajanjem pogosto izvajanih ukazov in skupin ukazov zložne kode drastično izboljša čas izvajanja programa [6]. 2.2 Razredna datoteka Eno izmed glavnih polj razredne datoteke je polje constant pool, ki vsebuje podatke o vseh konstantah, ki jih program potrebuje za izvajanje (razredi, globalne spremenljivke, literali, itd.). Na to polje se preko indeksa sklicujejo druga polja razredne datoteke. Zložna koda metod je zapisana v enem izmed polj attribute info znotraj polja method info. To polje je označeno z imenom Code (oziroma z ustreznim indeksom v polju konstant) in mora biti prisotno. V nasprotnem primeru pride do napake. 2.3 Zložna koda Zložno kodo sestavlja 205 ukazov, od tega se trije uporabljajo zgolj interno v javanskem navideznem stroju. Večina ukazov razpolaga zgolj z lokalnimi spremenljivkami in operandnim skladom, nekateri ukazi pa uporabljajo tudi operande, ki so jim podani kot del zložne kode.

17 Diplomska naloga 5 Ukaza tableswitch in lookupswitch imata spremenljivo dolžino, ostali ukazi pa imajo stalno dolžino [5, 7]. Tipi, ki se pojavljajo v zložni kodi (skupaj z njihovimi kratkimi oznakami): integer (i): celo število, na operandnem skladu zasede 4 bajte (javanski tip int), long (l): celo število, na operandnem skladu zasede 8 bajtov (javanski tip long), short (s): celo število, na operandnem skladu zasede 4 bajte (javanski tip short), byte (b): celo število, na operandnem skladu zasede 4 bajte(javanski tip byte), character (c): celo število (predstavitev znaka v sistemu UTF-16), dolžine dveh bajtov (javanski tip char), float (f): število v plavajoči vejici po standardu IEEE 754, dolžine štirih bajtov (javanski tip float), double (d): število v plavajoči vejici po standardu IEEE 754, dolžine osmih bajtov (javanski tip double), reference (a): kazalec na objekt. Pri nekaterih ukazih je predstavitev sklada pred izvršitvijo ukaza in po njej predstavljena z notacijo N1, N2 N3. To pomeni, da sta pred izvajanjem ukaza na vrhu sklada vrednosti N1 in N2, po izvršenem ukazu pa je na vrhu sklada vrednost N3.

18 6 Matevž Fabjančič Ukazi za branje in pisanje lokalnih spremenljivk Za branje lokalnih spremenljivk se uporabljajo ukazi oblike Tload in Tload N, za pisanje pa ukazi oblike Tstore in Tstore N. T predstavlja tip vrednosti, ki jo premikamo, N pa indeks lokalne spremenljivke v klicnem zapisu. Tip je predstavljen s kratko oznako enega izmed tipov navedenih na strani 5. Kadar je ukaz oblike Tload, mu mora slediti operand, ki predstavlja indeks lokalne spremenljivke, ki jo beremo ali pišemo Ukazi za delo s konstantami Za nalaganje celih števil, ki so lahko predstavljena z enim bajtom, se uporablja ukaz bipush, za števila, ki so lahko predstavljena z dvema bajtoma pa ukaz sipush. V obeh primerih se binarna predstavitev števila razširi na štiri bajte. Konstante, ki jih ni mogoče naložiti z ukazoma bipush in sipush, se nahajajo v razredni datoteki, v polju konstant. Za nalaganje teh števil se uporabljajo naslednji ukazi: ldc, ki zahteva, da je na naslednjem bajtu zapisan indeks konstante v polju konstant. To vrednost naloži na operandni sklad in jo po potrebi razširi na dolžino štirih bajtov, ldc w, ki zahteva, da je na naslednjih dveh bajtih zapisan indeks v polju konstant. To vrednost naloži na operandni sklad in jo po potrebi razširi na dolžino štirih bajtov, ldc2 w, ki zahteva, da je na naslednjih dveh bajtih zapisan indeks v polju konstant. Na tem indeksu mora biti zapisana konstanta tipa long ali tipa double. Vrednost dolžine osmih bajtov naloži na operandni sklad. Za pogosto uporabljene vrednosti obstajajo ukazi, ki ne potrebujejo operandov. Vrednost, ki jo nalagajo se prepozna iz operacijske kode. To so ukazi

19 Diplomska naloga 7 aconst null, ki na vrh sklada naloži vrednost null, iconst m1 (vrednost 1), iconst 1, iconst 2, iconst 3, iconst 4 in iconst 5 za nalaganje celih števil dolžine štirih bajtov, lconst 0 in lconst 1 za nalaganje celih števil dolžine osmih bajtov, fconst 0, fconst 1 in fconst 2 za nalaganje števil v plavajoči vejici dolžine štirih bajtov, dconst 0 in dconst 1 za nalaganje števil v plavajoči vejici dolžine osmih bajtov Ukazi za manipulacijo operandnega sklada Javanski navidezni podpira ukaze pop in pop2 za brisanje operandov na vrhu sklada in dup in dup2 za podvojitev operanda na vrhu sklada. Ukaza dup x1 in dup2 x1 se uporabljata za podvojitev operandov na vrhu sklada (podvojena vrednost je vstavljena eno mesto nižje: N1, N2 N2, N1, N2). Podobna sta ukaza dup x2 in dup2 x2 za podvojitev operandov na vrhu sklada (podvojena vrednost je vstavljena dve mesti nižje: N1, N2, N3 N3, N1, N2, N3). Ukaz swap zamenja zgornji dve vrednosti na skladu Ukazi za aritmetične operacije Javanski navidezni stroj podpira ukaze za seštevanje (Tadd), odštevanje (Tsub), množenje (Tmul), deljenje (Tdiv) in modulo (Trem). T predstavlja tip števil, nad katerimi se izvaja aritmetično operacija. Ker javanski navidezni stroj na tem nivoju ne uporablja vrednosti krajših od štirih bajtov, je lahko tip T izbran izmed i, l, f in d (obrazložitve na strani 5). Ukazi uporabijo dva operanda z vrha opredandnega sklada in rezultat pustijo na vrhu sklada. Za računanje nasprotne vrednosti števil se uporablja (Tneg). Ta izračuna nasprotno vrednost operanda, ki je na vrhu operandnega sklada. Tip T je izbran izmed i, l, f in d (obrazložitve na strani 5).

20 8 Matevž Fabjančič Za povečevanje lokalnih spremenljivk za 1 se uporablja ukaz iinc Ukazi za logične operacije Pomikanje bitov Javanski navidezni stroj podpira ukaza za pomik bitov v levo (ishl in lshl), ukaza za aritmetični pomik bitov v desno (ishr in lshr) in ukaza za logični pomik bitov v desno (iushr in lushr). Ukazi za pomike celih števil dolžine štirih bajtov (tip i) iz operandnega sklada preberejo dve vrednosti. Prva predstavlja vrednost, katere bite želimo pomakniti, druga pa število bitov za pomik. Ukazi za pomike celih števil dolžine osmih bajtov (tip l) iz operandnega sklada preberejo tri vrednosti. Prva predstavlja število bitov za pomik, druga in tretja (skupaj 8 bajtov) pa vrednost, katere bite želimo pomakniti. Bitne operacije Javanski navidezni stroj podpira ukaze za logični ali (Tor), logični in (Tand) in logični ekskluzivni ali (Txor). Ukazi uporabijo dva operanda z vrha sklada in rezultat pustijo na vrhu sklada Ukazi za delo z objekti Za stvaritev novega objekta se uporablja ukaz new. Ta ukaz kot argument v zložni kodi prejme dva bajta dolgo število. To število je indeks, na katerem se v polju konstant nahajajo informacije o razredu novega objekta. Kazalec na nov objekt se postavi na vrh sklada. Če ima konstruktor argumente, se ti podajo kot argumenti ukazu invokespecial (2.3.9) Ukazi za delo s tabelami Za definiranje novih tabel se uporabljajo ukazi newarray, anewarray in multinewarray. Ukazi kazalce na kopico, kjer so definirane tabele, pustijo na vrhu operandnega sklada.

21 Diplomska naloga 9 Ukaz newarray kot operand v zložni kodi prejme število, dolgo en bajt, ki predstavlja enega izmed osnovnih javanskih tipov, opisanih v poglavju 2.3. Dolžino tabele prebere z vrha operandnega sklada. Z ukazom anewarray definiramo tabelo kazalcev na objekte. Kot operand v zložni kodi prejeme eno število, dolžine dveh bajtov. To število je indeks v polju konstant, na katerem se nahaja opis razreda, ki mu pripadajo elementi nove tabele. Dolžino tabele podamo kot število na vrhu operandnega sklada. Za definiranje več dimenzionalnih tabel specifikacija definira ukaz multinewarray. Ta ukaz kot prvi operand v zložni kodi prejme število, dolgo dva bajta, ki predstavlja indeks v polju konstant. Na tem indeksu se nahaja opis razreda, s katerim je predstavljena večdimenzionalna tabela. Drugi operand v zložni kodi pa je enozložno število, s katerim navideznemu stroju povemo, koliko dimenzij ima nova tabela. Dolžine tabel po dimenzijah podamo kot števila na vrhu operandnega sklada, za vsako dimenzijo eno Ukazi za vejitve programa Pogojni skoki Ukazi za pogojne skoke v zložni kodi zasedejo tri bajte. Prvi bajt predstavlja operacijsko kodo. Naslednja dva bajta pa sestavita 16 bitno število. To število predstavlja odmik (od trenutne vrednosti programskega števca), na katerem se program nadaljuje, če je primerjava uspešna. V primeru neuspešne primerjave se program nadaljuje na naslednjem ukazu. V nadaljevanju je za opis relacij med vrednostmi na operandnem skladu uporabljena notacija A R B, kjer R predstavlja relacijo, B število na vrhu sklada, A pa naslednje število na skladu. Primerjanje kazalcev na objekte Za primerjanje kazalcev se uporabljata ukaza if acmpeq (A = B) in if acmpne (A B) [7, str. 460].

22 10 Matevž Fabjančič Primerjanje celih števil Za primerjanje celih števil so na voljo ukazi if icmpeq (A = B), if icmpne (A B), if icmplt (A < B), if icmpge (A B), if icmpgt (A > B) in if icmple (A B) [7, str. 461]. Primerjanje vrednosti s konstanto 0 Za primerjanje vrednosti s konstanto 0 so na voljo ukazi ifeq (A = 0), ifne (A 0), iflt (A < 0), ifge (A 0), ifgt (A > 0) in ifle (A 0). Ti ukazi z vrha sklada vzamejo le eno vrednost, vrednost A [7, str. 463]. Brezpogojni skoki Za brezpogojne skoke se uporabljata ukaza goto, ki zahteva operand dolžine dveh bajtov in goto w, ki zahteva operand dolžine štirih bajtov. Oba ukaza operand interpretirata kot odmik od trenutne vrednosti programskega števca. Na tem odmiku se nadaljuje izvajanje programa. Če sta za brezpogojni skok uporabljena ukaza jsr ali jsr w, se pred skokom naslov naslednjega ukaza shrani na operandni sklad. Po shranjevanju naslova se izračuna odmik po istem postopku kot pri ukazih goto in goto w. Ukaz ret se uporabi za skok na naslov, ki je shranjen v lokalni spremenljivki z indeksom, ki je ukazu ret podan kot operand. To pomeni, da je naslov, ki je bil shranjen z ukazom tipa jsr, pred uporabo ukaza ret potrebno prestaviti v eno izmed lokalnih spremenljivk. Ukaza tableswitch (0xaa) in lookupswitch (0xab) Ukaza tableswitch in lookupswitch imata spremenljivo dolžino. Uporabljata se ob prevajanju stikalnih stavkov (angl. switch statements). Njuna dolžina je odvisna od možnosti (angl. case) stikalnega stavka. Oba ukaza na podlagi celoštevilske vrednosti, ki se nahaja na vrhu operandnega sklada, izračunata naslov odmika, ki je del ukaz. Ta odmik nato

23 Diplomska naloga 11 prištejeta trenutni vrednosti programskega števca. Razlika je zgolj v načinu računanja naslova odmika. V nadaljevanju V predstavlja vrednost na vrhu operandnega sklada, P C pa trenutno vrednost programskega števca. Ukaz tableswitch izkorišča stikalne stavke, pri katerih so možnosti nadaljevanja označene z zaporednimi celimi števili. Ukaz ima tri stalne operande. Naj D predstavlja operand default (ta predstavlja odmik veje default), L operand low (odmik prva možnosti) in H operand high (odmik zadnje možnost). Če velja L V H, se odmik nahaja na indeksu V L. Sicer se program nadaljuje na naslovu P C + D [7, str ]. Ukaz lookupswitch dovoljuje, da v zaporedju možnosti niso zastopane vse vrednosti. To pa pomeni, da mora z binarnim iskanjem poiskati možnost, ki se ujema z vrednostjo V [7, str. 525] Ukazi za klicanje metod in vračanje rezultatov Ob klicanju metode objekta se izvrši ukaz invokevirtual ali invokespecial, če gre za klic metode razreda, ki ga trenutni razred razširja, metode z določilom private ali konstruktorji. Oba ukaza zahtevata dva enozložna operanda, ki sestavita indeks v polju konstant, na katerem so zapisane informacije o klicani metodi [7, str. 482, 489]. Če je ta metoda v razredu definirana kot implementacija vmesnika (angl. interface), se uporabi ukaz invokeinterface. Za klicanje statičnih metod razredov se uporabi ukaz invokestatic [7, str. 35]. Argumenti metod se prenašajo preko operandnega sklada. Če gre za klic nestatične metode, je prvi operand kazalec na objekt, nad katerim se neka metoda kliče [7, 12]. 7. različica specifikacije javanskega navideznega stroja doda ukaz invokedynamic. Namenjen je lažji implementaciji dinamično tipiziranih programskih jezikov, ki se izvajajo na javanskem navideznem stroju [10]. Za vračanje iz metod se uporabljajo ukazi oblike Treturn in ukaz return, za metode ki ne vračajo rezultata. Pri ukazih oblike Treturn je s T označen tip rezultata metode (i, l, f, d in a). Rezultat je vzet iz vrha operandnega

24 12 Matevž Fabjančič sklada klicane metode in porinjen na sklad klicoče metode.

25 Poglavje 3 Opis delovanja PyJVM PyJVM je odprtokodna implementacija javanskega navideznega stroja v programskem jeziku Python [11]. Ta implementacija je bila uporabljena kot osnova za orodje pyjvmgui, ki je rezultat te diplomske naloge. Ker delovanje PyJVM ni dokumentirano, sem tok programa analiziral sam. S PyJVM sem pognal testne programe, ki jih je sestavil avtor PyJVM. Z uporabo razhroščevalnika in izpisovanja podatkov o vrednostih spremenljivk sem prišel do ugotovitev, ki so zapisane v tem poglavju. 3.1 Zagon navideznega stroja Ob zagonu navideznega stroja PyJVM se ustvari 48 javanskih niti (večnitnost je opisana v poglavju 3.3), ki poskrbijo za inicializacijo navideznega stroja. Dvaindvajseta nit po končani inicializaciji navideznega stroja ostane v čakanju, ostale pa se zaključijo. Ta nit naj bi skrbela za objekte, ki implementirajo metodo finalize(). To metodo ta nit pokliče preden se objekt izbriše iz pomnilnika. Zavoljo spremljanja delovanja te niti sem napisal testni razred langfeatures.finalizer (programska koda 3.1, ki ustvari dva objekta z metodo finalize. Nad obema objektoma kliče metodo message, ki izpiše preprosto sporočilo. Povezava do objektov se nato izbriše. S klicem me- 13

26 14 Matevž Fabjančič tode System.gc() se javanskemu navideznemu stroju namigne, naj začne s čiščenjem pomnilnika. Da bi se čiščenje pomnilnika zgodilo z večjo gotovostjo, se nit programa s klicem metode Thread.sleep(...) za nekaj sekund ustavi. Ker je v PyJVM pomnilnik predstavljen s strukturami, ki jih ponuja programski jezik Python, s pomnilnikom upravlja okolje Python. To je razlog, da ob zagonu testnega primera langfeatures.finalizer ob klicu metode System.gc() pride do napake, saj metoda v PyJVM ni implementirana. 3.2 Izvajanje ukazov Ukazi zložne kode so v PyJVM predstavljeni s funkcijami. Vsaka izmed njih je označena z ki kot argument code sprejme operacijsko kodo nekega ukaza. Ob uvozu skripte, v kateri se nahajajo funkcije, se povezava na funkcije ukazov shranijo v slovar, kjer je ključ operacijska koda. def bytecode ( code ): def cl( func ): BYTECODE [ hex ( code )] = return func func return cl Programska koda 3.2: Programska koda Ob izvajanju se v postopku dekodiranja ukaza iz slovarja BYTECODE pridobi povezava na funkcijo, ki predstavlja trenutni ukaz. Ta funkcija se nato pokliče, kot argument pa se ji poda povezava na klicni zapis, preko katere ima dostop do operandnega sklada in morebitnih operandov v zložni kodi. Če funkcija za nek ukaz ni implementirana, torej je ni v slovarju BYTECODE, pride do napake.

27 Diplomska naloga 15 public class Finalizer { public static void main ( String [] args ) { Finalizer f = new Finalizer (); f. message (); f = new Finalizer (); f. message (); f = null ; System.gc (); } try { Thread. sleep (1000) ; } catch ( Exception e) { e. printstacktrace (); } public void message () { } System. out. println (" hello "); public void finalize () { System. out. println (" Finalizing "); } Programska koda 3.1: langfeatures.finalizer Programska koda testnega razreda

28 16 Matevž ( code =0 x60 ) def iadd ( frame ): value2 = frame. stack. pop () value1 = frame. stack. pop () result = value1 + value2 result = cut_to_int ( result ) jassert_int ( result ) frame. stack. append ( result ) Programska koda 3.3: Funkcija, ki izvrši ukaz iadd (celoštevilsko seštevanje) Zložna koda metode in razredo, ki jih programerju ponuja javanska razredna zbirka, se preberejo iz datoteke rt.jar, ki jo PyJVM potrebuje za delovanje. Nativne metode so implementirane v Pythonu. 3.3 Večnitnost v PyJVM Večnitnost je v navideznem stroju PyJVM implementirano z vrsto FIFO. V to vrsto se nove niti ob stvaritvi dodajajo preko metode add thread iz razreda VM. Vsaka nit je predstavljena z objektom razreda Thread. Pomembni atributi teh objektov so sklad klicnih zapisov in zastavice, ki nosijo informacijo o čakanju drugih niti (is notified, waiting notify). Kadar v javanskem programu pride do čakanja na zaključek niti, PyJVM pokliče funkcijo java lang Object wait J V, ki predstavlja nativno metodo wait() iz razreda java.lang.object. Učinek te funkcije je odvisen od zastavic is notified in waiting notify objektov razreda Thread. Če nit še ne čaka, se ustrezno popravijo zastavice, nit pa se postavi v čakalno vrsto. V nasprotnem primeru se preveri, če je bila nit obveščena o zaključku kakšne druge niti

29 Diplomska naloga 17 (zastavica is notified). Dodeljevanje procesorskega časa nitim poteka po naslednjem postopku. Niti se iz vrste jemljejo po principu FIFO. Naj bo nit, ki je na vrsti za izvajanje, imenovana nit T. Nit T lahko izvede največ 100 ukazov. Ko se izvajanje niti T ustavi (bodisi zaradi konca programa, bodisi zaradi čakanja na drugo nit), se preveri, če se je nit T končala. Če se je nit T končala, se o tem obvesti vse niti, ki so čakale na zaključek niti T.

30 18 Matevž Fabjančič

31 Poglavje 4 Implementacija orodja pyjvmgui Orodje pyjvmgui, rezultat te diplomske naloge, je simulator za spremljanje izvajanja javanskih programov. Orodje kot razširitev javanskega navideznega stroja PyJVM, ki je opisan v poglavju 3, ponuja pregled nad javansko zložno kodo, operandnim skladom in lokalnimi spremenljivkami metod. Programe lahko preko grafičnega uporabniškega vmesnika izvajamo postopoma. 4.1 Izbira primerne implementacije javanskega navideznega stroja Ker implementacija javanskega navideznega stroja zahteva veliko časa, sem moral za nadgradnjo izbrati obstoječega. Odločal sem se med spodaj naštetimi implementacijami. Pri vrednotenju primernosti in končni izbiri sem se osredotočal na naslednje lastnosti: Preprostost: Ker je potrebna predelava javanskega navideznega stroja, do te mere da lahko nad njim prikažemo uporabniški vmesnik, more biti izvorna koda lahko razumljiva. Komponente navideznega stroja morajo biti v izvorni kodi čimbolj jasno razvidne. 19

32 20 Matevž Fabjančič Možnost izdelave uporabniškega vmesnika: Da bi lahko nad navideznim strojem izdelal uporabniški vmesnik, ki bi uporabniku prikazoval notranje stanje navideznega stroja, je zaželeno, da je implementiran v programskem jeziku, ki omogoča enostavno izdelovanje uporabniškega vmesnika. Aktualnost: Da bi lahko javanski navidezni stroj podpiral današnje programske konstrukte, mora podpirati čim novejšo različico Jave JamVM Javanski navidezni stroj JamVM je bil izdelan kot izjemno majhna implementacija javanskega navideznega stroja. Implementiran je v programskem jeziku C. Podpira izvajanje programov do različice Java 6. Omogoča tudi sprotno prevajanje v strojno kodo (JIT), kar bi lahko otežilo nadaljnje delo [9]. Za navidezni stroj JamVM se nisem odločil, ker je namenjen dejanski uporabi in je temu primerno tudi optimiziran. Optimizirana koda je težko berljiva, mnoge komponente javanskega navideznega stroja (npr. programskega števca) niso jasno vidne OpenJDK OpenJDK je ena najbolj razširjenih implementacij javanskega razvojnega in izvajalnega okolja. Napisana je v kombinaciji programskih jezikov C in C++. OpenJDK podpirajo tudi najnovejše različice Jave [2]. Podobno kot JamVM je tudi OpenJDK optimiziran program in zato manj primeren za predelavo in izdelovanje uporabniškega vmesnika. Prednost izvajalnega okolja OpenJDK je v njegovi sodobnosti, saj so nove različice v koraku z novimi različicami Jave.

33 Diplomska naloga PyJVM PyJVM je preprost javanski navidezni stroj, ki je v celoti implementiran v programskem jeziku Python (različica 2). Nudi podporo javanskim programom, ki so združljivi z Javo 7 [11]. Slabosti PyJVM izvirajo predvsem iz jezika, v katerem je ta javanski navidezni stroj implementiran. Ker Python ni statično tipiziran jezik je podpora v razvijalnih okoljih slabša. Tudi razumevanje izvorne kode je zato težje. Python pa prinaša tudi prednosti, ki so bile povod za izbiro te implementacije. Programi so enostavno prenosljivi med računalniškimi arhitekturami in operacijskimi sistemi. Obstaja tudi širok nabor knjižnic za izdelovanje uporabniških vmesnikov, kar bo poenostavilo programiranje. 4.2 Implementacija potrebnih abstrakcij Predstavitev zložne kode Za branje in nalaganje razrednih datotek poskrbi PyJVM. Ker je zložna koda metod predstavljena kot seznam bajtov, za prikaz na uporabniškem vmesniku ni primerna. PyJVM funkcije, ki izvršujejo ukaze, ob zagonu poveže z ustreznimi zložnimi kodami. Ob zagonu programa se uvozijo skripte v modulu pyjvm.ops. Ta vsebuje funkcije, označene z (glej 3.2). To nam omogoči, da na podlagi zložne kode dobimo povezavo do funkcije, ki izvrši ustrezen ukaz (programska koda 3.3). Na podoben način sem pripravil skripti za generiranje objektov razreda Bytecode in razločevanje operandov iz zložne kode. Objekti razreda Bytecode nam omogočijo, da na enostaven način dostopamo do naslova, operacijske kode, imena in operandov poljubnega ukaza, kar je ključno za prikaz na uporabniškem vmesniku.

34 22 Matevž ( code =0 x17 ) def fload (loc, code ): """ : return ( size, Bytecode ) """ division_ arr = [1] operands = [] offset = 1 for op in division_ arr : cur_ op_ slice = code [ loc + offset : loc + offset + op] if op == 1: operands. append ( unpack_byte ( cur_op_slice )) elif op == 2: operands. append ( unpack_short ( cur_op_slice )) elif op == 4: operands. append ( unpack_int ( cur_op_slice )) offset += op return (1 + 1, Bytecode (loc, 0x17, operands )) Programska koda 4.1: objekt tipa Bytecode Funkcija, ki pretvori ukaz fload v

35 Diplomska naloga Dostop do klicnih zapisov in niti PyJVM evidenco niti vodi z vrsto FIFO v objektih razreda VM. Ker s tem nimamo direktnega dostopa do točno določene niti, sem razred VM prilagodil tako, da se evidenca niti vodi še v navadnem seznamu. S tem lahko preko zaporedne številke vedno dostopamo do točno določene niti. Zavoljo lažje interakcije med uporabniškim vmesnikom in navideznim strojem sem nadzor izvajanja poenostavil z razredom ThreadExecutor, ki v konstruktorju prejme povezavo na nit, ki jo bo predstavljal. Objekti tipa ThreadExecutor nam ponujajo pet metod: get frame for thread: pridobi povezavo do trenutnega klicnega zapisa za podano nit, is daemon: preveri, če je podana nit demon, step thread: izvrši en ukaz za podano nit, step thread until frame over: tekoče izvajanje zložne kode do zaključka trenutne metode, step thread until done or blocked: tekoče izvajanje niti, dokler se ta ne zaključi. Če pride do blokade niti (npr. zaradi čakanja na vhodno izhodne naprave), se nadzor vrne uporabniku. 4.3 Implementacija grafičnega uporabniškega vmesnika Paket PySide2 Za programiranje uporabniškega vmesnika je bil uporabljen paket PySide2, izdelek projekta Qt for Python. Qt for Python je uradno podprt projekt organizacije Qt Group, ki razvija tudi okolje Qt [3]. Ponuja programski vmesnik, ki programerjem olajša programiranje komunikacije med programom in uporabniškim vmesnikom.

36 24 Matevž Fabjančič Button { //... onclicked : { app. stepexecutor () bytecodetable. selection. clear () var loc = app. getcurloc () //... } } Programska koda 4.2: znotraj predloge QML Primer uporabe jezika JavaScript Paket PySide2 lahko namestimo preko portala PyPI, z uporabo ukaza pip2 install pyside2. Ko je paket nameščen, je razvijalno okolje že pripravljeno na razvoj uporabniškega vmesnika. V okolju Qt lahko osnovni izgled in dogodke ob klikih na gumbe definiramo v predlogi QML. V njej v drevesni strukturi opišemo grafični uporabniški vmesnik. Akcije ob dogodkih definiramo v programskem jeziku JavaScript, ki ga lahko uporabljamo znotraj predolge QML Zaslonske maske Javanski navidezni stroj ima več niti, ki so predstavljene na povsem enak način. Zato je smiselno, da za vsako nit prikažemo eno okno, ki prikazuje zložno kodo, operande in lokalne spremenljivke trenutnega okvirja (slika 4.2). V tabeli zložne kode bo za vsak ukaz prikazan njegov naslov, ime ukaza in njegovi operandi. Za spremljanje poteka programa bomo potrebovali tudi gumb, ki navideznemu stroju sporoči, da naj izvrši en ukaz. Funkcije, ki jih ponuja javanska razredna zbirka, pogosto kličejo druge funkcije, ki nas ne zanimajo. Da upo-

37 Diplomska naloga 25 PyJVM GUI Bytecode Step Step out Stack Local Variables Slika 4.1: Zaslonska maska uporabniškega vmesnika rabniku ne bi bilo treba spremljati poteka teh funkcij, bo na voljo tudi gumb, ki bo trenutno funkcijo brez interakcije z uporabnikom izvršil do konca Implementacija Grafični vmesnik se sestavi v objektu razreda PyJvmGui. Ta razred vsebuje metode, do katerih lahko dostopamo iz predloge QML, ki predpisuje izgled grafičnega uporabniškega vmesnika. Ker v predlogi QML ne moremo neposredno dostopati do spremenljivk in objektov, ki smo jih definirali v Pythonu, jih moramo zaviti v razrede, ki razširjajo razred QAbstractListModel, ki je del paketa PySide2. V teh razredih definiramo vlogo za vsak atribut objekta, ki ga zavijamo. Definiramo funkcijo data, ki kot argument prejme indeks elementa in vlogo (programska

38 26 Matevž Fabjančič Slika 4.2: Dve okni, za vsako nit eno koda 4.3). Ta funkcija se implicitno kliče, kadar se v predlogi QML sestavljajo tabele. Kot argumenta, se funkciji podata zaporedna številka vrstice tabele, in vloga stolpca tabele (programska koda 4.4). Funkcija vrne niz znakov, ki predstavlja željeno vrednost. Za pomikanje po programu se uporabljata dva gumba. Prvi gumb, z oznako Step, ob kliku sproži funkcijo step thread objekta tipa ThreadExecutor, ki izvrši en ukaz. Drugi gumb, z oznako Step out, nam omogoči, da trenutno metodo izvršimo do konca. Ob kliku na gumb se najprej pokliče metoda razreda PyJvmGui, ki je bila izpostavljena uporabniškemu vmesniku. Metode izpostavimo z Argumenti dekoratorja predstavljajo tipe argumentov naše funkcije. Enega od operandov lahko označimo z imenom result. S tem okolju PySide2 povemo, da metoda vrača vrednost, ki je tipa result (programska koda 4.5). To vrednost lahko nato uporabimo za manipuliranje z uporabniškim vmesnikom v predlogi QML. 4.4 Objava orodja na spletnem portalu PyPI PyPI, ali Python Package Index, je spletni portal, na katerem lahko brezplačno objavimo programe in knjižnice, napisane v Pythonu. Programe,

39 Diplomska naloga 27 def data (self, q_modelindex, role = None ): row = q_ modelindex. row () if role == self. LOC_ ROLE : return str ( self. bytecodes [ row ]. loc ) if role == self. OP_ ROLE : return str ( self. bytecodes [ row ]. name ) if role == self. OPERAND_ ROLE : return str ( self. bytecodes [ row ]. operands ) Programska koda 4.3: Funkcija data, ki predstavlja povezavo med predlogo QML in Pythonom za model bytecode TableView { //... TableViewColumn { role : " loc " //... } //... } model : bytecode Programska koda 4.4: Del predloge QML, ki definira stolpec z naslovi ukazov zložne kode

40 28 Matevž Fabjančič from PySide2. QtCore import ( result = int ) def getcurloc ( self ): return self. loc_to_idx. get ( self. executor. get_frame_for_thread ( self. thread_idx ).pc ) Programska koda 4.5: Funkcija, ki je izpostavljena grafičnemu uporabniškemu vmesniku. objavljene v imeniku PyPI, lahko nameščamo in posodabljamo z orodjem pip. Orodje pyjvmgui je objavljeno v imeniku PyPI. Ta razdelek opisuje korake, ki vodijo do objave v imeniku PyPI. Osnova za objavo v imeniku PyPI in nameščanje paketov je skripta setup.py, ki se nahaja v korenskem imeniku projekta. Ta mora vsebovati klic funkcije setup, ki jo ponuja paket setuptools, ki je del Pythona. Funkcija sprejme mnogo argumentov, s katerimi opišemo orodje: naziv, različico, avtorja, opis, idr Vsebina skripte setup.py Skripta setup.py vsebuje informacije, ki so potrebne za namestitev. Večino teh podamo kot argumente funkciji setup. Kot argumente podamo ime paketa (name), različico (version), kratek opis paketa (description), sklice na kodo, ki jo želimo objaviti (argument packages). Paketi so lahko tudi samostojni programi, ki jih lahko uporabnik požene iz ukazne vrstice. Če je naš paket samostojen program, kot argument podamo tudi slovar entry points, ki vsebuje ključ console scripts. Preko

41 Diplomska naloga 29 tega ključa se v času namestitve prebere ime programa (ukaz, ki se bo uporabljal za zagon programa v ukazni vrstici) in sklic na funkcijo, ki predstavlja vstopno točko programa (v orodju pyjvmgui je to funkcija main). Med argumenti podamo tudi seznam paketov, ki jih naš program potrebuje ob izvajanju. Te podamo v argumentu install requires. Namestitev lahko zahteva še kaj drugega kot le namestitev drugih paketov in namestitev skript. Kodo, za katero želimo, da se izvede, napišemo kot funkcijo run v razredu, ki razširja razred install, ki je del paketa setuptools. Podatke o novih razredih funkciji setup podamo v argumentu cmdclass. Ta argument je slovar, v katerem pod ključi, ki so imena osnovnih razredov (v tem primeru je to install), podamo sklice na nove razrede (tiste, ki implementirajo funcijo run) Uporaba skripte setup.py Skripto setup.py lahko uporabimo za sestavljanje paketov za objavo in tudi nalaganje sestavljenega paketa v imenik PyPI. Objava paketa po priporočilih poteka v dveh korakih. V prvem koraku svoj paket objavimo v testnem imeniku PyPI. Testni imenik je sicer povsem enak glavnemu imeniku, namenjen pa je preizkušanju postopka objave in odpravljanju napak v skripti setup.py. Z ukazom python setup.py sdist upload svoj paket sestavimo kot distribucijo izvorne kode (skript, napisanih v Pythonu), in sestavljen paket naložimo v imenik. V testni fazi kot argument -r podamo še naslov testnega imenika, Ko smo prepričani, da bo objava uspešna, ponovimo zgornji postopek, le da izpustimo argument -r, s katerim smo podali naslov testnega imenika. Tokrat se naš paket naloži na glavni imenik PyPI. Pri objavi ne smemo pozabiti, da se imena različic paketov v imeniku PyPI ne smejo podvajati. Pri preverjanju edinstvenosti se ne upoštevajo le različice paketov, ki so trenutno dostopne v imeniku PyPI, ampak se upošteva celotna zgodovina objav.

42 30 Matevž Fabjančič 4.5 Uporaba orodja pyjvmgui Namestitev Orodje pyjvmgui je objavljeno v registru PyPI. Namestimo ga lahko z ukazom pip2 install pyjvmgui. Ukaz namesti orodje in vse pakete, ki jih pyjvmgui potrebuje. Če imamo orodje pyjvmgui že nameščeno in ga želimo posodobiti, uporabimo ukaz pip2 install pyjvmgui --upgrade. Ob posodabljanju je priporočena uporaba zastavice --no-deps, ki prepreči, da bi se paket PySide2 še enkrat prenašal. Namestitev v domačem imeniku uporabnika ustvari mapo.pyjvmgui, v katero shrani nekaj datotek, ki jih orodje potrebuje za delovanje. Izvorna koda orodja pyjvmgui je izdana pod licenco GPL 3 in je dostopna na naslovu Prvi zagon Orodje pyjvmgui za delovanje potrebuje javansko razredno zbirko sedme različice. Ob prvem zagonu programa se ta prenese s spletnega naslova in shrani v mapo.pyjvmgui v domačem imeniku uporabnika. Ob vsakem zagonu programa se preveri če datoteka rt.jar obstaja. Če datoteka rt.jar ne obstaja ali je poškodovana, se prenese ponovno Uporaba orodja Zagon orodja Orodje, nameščeno z ukazom pip2, lahko uporabljamo neposredno iz ukazne vrstice. Javanski program mora biti preveden za Javo 7. Poženemo ga z ukazom pyjvmgui -cp <IMENIK RAZREDOV> <RAZRED>, kjer IMENIK RAZREDOV predstavlja pot do imenika z razredi našega programa, RAZRED pa ime razreda z metodo main, ki jo želimo pognati.

43 Diplomska naloga 31 Ob zagonu se odpreta dve okni. Okno, ki je označeno s Thread 1 (daemon) je okno 22. niti PyJVM, ki je opisana v poglavju 3.1. Nit, ki izvede metodo main se prikaže v oknu, označenem s Thread 2. Pomikanje po programu Za pomikanje po programu se uporabljajo trije gumbi na zgornji desni strani uporabniškega vmesnika, kot prikazuje slika 4.3. Gumb z oznako Step izvrši ukaz, ki je osvetljen v seznamu zložne kode na levi strani okna. Gumb z oznako Step Out povzroči tekoče izvajanje trenutne metode do njenega zaključka. Če je klicni zapis trenutna metoda edini na skladu niti, se ne zgodi nič. Gumb z oznako Step unitl thread done/blocked povzroči tekoče izvajanje niti, dokler se ta ne zaključi. Če med izvajanjem pride do prekinitve, na primer zaradi izjeme ali klica metode Thread.sleep(...), se izvajanje ustavi. Če v programu, ki ga spremljamo pride do stvaritve novih niti, se ustvarijo nova okna orodja pyjvmgui. Zaključek izvajanja Ko se neka nit zaključi, se njeno okno zapre. Izjema je le okno Thread 1 (daemon), ki se zapre ob kliku na katerikoli gumb, če je to edina nit, ki še teče. Razlog za to izhaja iz upravljanja s pomnilnikom v PyJVM, ki je opisan v poglavju Orodje class2json Z namenom, da bi bolje spoznal strukturo javanskih razrednih datotek, sem v programskem jeziku Rust napisal orodje, ki uporabniku omogoča, da razredno datoteko na zaslon izpiše na uporabniku prijazen način.

44 32 Matevž Fabjančič Slika 4.3: Okno orodja pyjvmgui med izvajanjem testnega primera bytecode.calcstest Na podlagi knjige The Java R Virtual Machine Specification: Java SE 7 Edition sem sprva pripravil strukture, ki se pojavljajo v razrednih datotekah (cp info, method info, itd.) [7]. Te strukture se nato napolnijo s podatki, prebranimi iz podane razredne datoteke. Ko je razredna datoteka predstavljena s strukturami, lahko njen prikaz spreminjamo z implementacijo funkcije fmt. V tej funkciji podamo obliko tekstovnega izpisa strukture, kot prikazuje programska koda 4.6. Orodje class2json še ni povsem dokončano, saj razrednih datotek ne izpisuje v datoteke JSON. Vseeno pa nudi človeku razumljiv prikaz vsebine razrednih datotek. Orodje je odprtokodno in dostopno na spletnem naslovu

45 Diplomska naloga 33 fn fmt (& self, f: & mut fmt :: Formatter ) -> fmt :: Result { f. debug_struct (" Utf8Info "). field (" tag ", & self. tag ). field (" length ", & self. length ). field ( " bytes ", & String :: from_utf8 ((& self. bytes ). clone ()). unwrap () ). finish () } Programska koda 4.6: Funkcija fmt za prikazovanje strukture Utf8Info

46 34 Matevž Fabjančič

47 Poglavje 5 Sklepne ugotovitve Cilj te diplomske naloge je bil dosežen. Izdelano je bilo orodje pyjvmgui, ki lahko služi kot didaktični pripomoček pri poučevanju o delovanju javanskega navideznega stroja. Simulator na preprost način prikaže javanski navidezni stroj. Grafični uporabniški vmesnik orodja pyjvmgui nazorno prikaže niti programa in njihovo sočasno delovanje. Orodje je odprtokodno, kar omogoča njegovim uporabnikom, da ga nadgradijo po lastnih željah in potrebah. Spremljanje izvorne kode programa, nadgradnja na tretjo različico programskega jezika Python in boljši uporabniški vmesnik so le nekatere izmed možnih nadgradenj orodja pyjvmgui. Stranski produkt diplomskega dela je bilo tudi orodje class2json, opisano v poglavju 4.6. Orodje na človeku razumljiv način prikaže javansko razredno datoteko. Poleg simulatorja lahko tudi drugo poglavje te diplomske naloge služi kot didaktični pripomoček. V njem so opisani ukazi javanske zložne kode in konkretna implementacija javanskega navideznega stroja, PyJVM. 35

48 36 Matevž Fabjančič

49 Slike 4.1 Zaslonska maska uporabniškega vmesnika Dve okni, za vsako nit eno Okno orodja pyjvmgui med izvajanjem testnega primera bytecode.calcstest

50 38 Matevž Fabjančič

51 Seznam izvlečkov programske kode 3.2 Programska koda Programska koda testnega razreda langfeatures.finalizer Funkcija, ki izvrši ukaz iadd (celoštevilsko seštevanje) Funkcija, ki pretvori ukaz fload v objekt tipa Bytecode Primer uporabe jezika JavaScript znotraj predloge QML Funkcija data, ki predstavlja povezavo med predlogo QML in Pythonom za model bytecode Del predloge QML, ki definira stolpec z naslovi ukazov zložne kode Funkcija, ki je izpostavljena grafičnemu uporabniškemu vmesniku Funkcija fmt za prikazovanje strukture Utf8Info

52 40 Matevž Fabjančič

53 Literatura [1] BCEL Class Construction Kit. Dosegljivo: net/cck.html. [Dostopano 11. september 2018]. [2] OpenJDK. Dosegljivo: [Dostopano 11. september 2018]. [3] Qt for Python. Dosegljivo: [Dostopano 11. september 2018]. [4] Tomaž Dobravec. Sistemska programska oprema: Dinamično izvajanje programov. Stran 24. Prosojnice pri predmetu sistemska programska oprema (63264). [5] Stephen Gilmore and Javier Esparza. CS1Bh Lecture Note 7 - Compilation I: Java Byte Code. Dosegljivo: teaching/cs1/cs1/bh/notes/javabytecode.pdf, [Dostopano 11. september 2018]. [6] Thomas Kotzmann, Christian Wimmer, Hanspeter Mössenböck, Thomas Rodriguez, Kenneth Russel, and David Cox. Design of the Java HotSpot TM Client Compiler for Java 6. ACM Trans. Archit. Code Optim., 5(1), [7] Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley. The Java R Virtual Machine Specification: Java SE 7 Edition. Dosegljivo: pdf, [Dostopano 11. september 2018]. 41

54 42 Matevž Fabjančič [8] Andrey Loskutov. Bytecode Outline plugin for Eclipse. Dosegljivo: [Dostopano 11. september 2018]. [9] Robert Lougher. JamVM. Dosegljivo: net/. [Dostopano 11. september 2018]. [10] Francisco Ortin, Patricia Conde, Daniel Fernandez-Lanvin, and Raùl Izquierdo. The Runtime Performance of invokedynamic: An Evaluation with a Java Library. IEEE Software, Software, IEEE, IEEE Software, (4):1, [11] Andrew Romanenco. PyJVM. Dosegljivo: [Dostopano 11. september 2018]. [12] John Waldron and James Power. Comparison of Bytecode and Stack Frame Usage by Eiffel and Java Programs in the Java Virtual Machine. Proceedings of the 2nd International Workshop on Computer Science and Information Technologies CSIT 2000, 2000.

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni RAM stroj Nataša Naglič 4. junij 2009 1 RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni trak, pomnilnik ter program. Bralni trak- zaporedje

Prikaži več

Strojna oprema

Strojna oprema Asistenta: Mira Trebar, Miha Moškon UIKTNT 2 Uvod v programiranje Začeti moramo razmišljati algoritmično sestaviti recept = napisati algoritem Algoritem za uporabo poljubnega okenskega programa. UIKTNT

Prikaži več

Slide 1

Slide 1 Tehnike programiranja PREDAVANJE 10 Uvod v binarni svet in računalništvo (nadaljevanje) Logične operacije Ponovitev in ilustracija Logične operacije Negacija (eniški komplement) Negiramo vse bite v besedi

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Programirljivi Digitalni Sistemi Digitalni sistem Digitalni sistemi na integriranem vezju Digitalni sistem

Prikaži več

Microsoft Word - avd_vaje_ars1_1.doc

Microsoft Word - avd_vaje_ars1_1.doc ARS I Avditorne vaje Pri nekem programu je potrebno izvršiti N=1620 ukazov. Pogostost in trajanje posameznih vrst ukazov računalnika sta naslednja: Vrsta ukaza Štev. urinih period Pogostost Prenosi podatkov

Prikaži več

Diapozitiv 1

Diapozitiv 1 9. Funkcije 1 9. 1. F U N K C I J A m a i n () 9.2. D E F I N I C I J A F U N K C I J E 9.3. S T A V E K r e t u r n 9.4. K L I C F U N K C I J E I N P R E N O S P A R A M E T R O V 9.5. P R E K R I V

Prikaži več

ARS1

ARS1 Nepredznačena in predznačena cela števila Dvojiški zapis Nepredznačeno Predznačeno 0000 0 0 0001 1 1 0010 2 2 0011 3 3 Pri odštevanju je stanje C obratno (posebnost ARM)! - če ne prekoračimo 0 => C=1 -

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : Državni izpitni center *M17178111* SPOMLADANSKI IZPITNI ROK Izpitna pola 1 Četrtek, 1. junij 2017 / 90 minut Dovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero

Prikaži več

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: +386 1 729 6 460 Faks.: +386 1 729 6 466 www.nevtrin.si info@elektrina.si USB RFID READER Navodila za uporabo?

Prikaži več

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNI

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNI UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

Prikaži več

Microsoft Word - vaje2_ora.doc

Microsoft Word - vaje2_ora.doc II UKAZI 1. Napišite zaporedje ukazov, ki vrednost enobajtne spremenljivke STEV1 prepiše v enobajtno spremenljivko STEV2. Nalogo rešite z neposrednim naslavljanjem (zaporedje lahko vsebuje le 2 ukaza v

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Procesorji Model računalnika, mikrokrmilnik CPE = mikrosekvenčnik + podatkovna

Prikaži več

Nameščanje Adopt Open Java Development Kit 8

Nameščanje Adopt Open Java Development Kit 8 Nameščanje Adopt Open Java Development Kit 8 za Windows x64 IZUM, 2019 IZUM, COBISS, COMARC, COBIB, COLIB, CONOR, SICRIS, E-CRIS so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod...

Prikaži več

Nameščanje Adopt Open Java Development Kit 8

Nameščanje Adopt Open Java Development Kit 8 Nameščanje Adopt Open Java Development Kit 8 za Windows x64 IZUM, 2019 IZUM, COBISS, COMARC, COBIB, COLIB, CONOR, SICRIS, E-CRIS so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod...

Prikaži več

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje priročno programsko okolje tolmač interpreter (ne prevajalnik)

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : ržavni izpitni center *M15178112* SPOMLNSKI IZPITNI ROK Izpitna pola 2 Četrtek, 4. junij 2015 / 90 minut ovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero ali

Prikaži več

Microsoft Word - UP_Lekcija04_2014.docx

Microsoft Word - UP_Lekcija04_2014.docx 4. Zanka while Zanke pri programiranju uporabljamo, kadar moramo stavek ali skupino stavkov izvršiti večkrat zaporedoma. Namesto, da iste (ali podobne) stavke pišemo n-krat, jih napišemo samo enkrat in

Prikaži več

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo Turingov stroj in programiranje Barbara Strniša 12. 4. 2010 1 Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolov (običajno Σ 2) Σ n = {s 1 s 2... s n ; s i Σ, i =

Prikaži več

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna stran: http://www.coks.si/ Elektronski naslov: podpora@coks.si

Prikaži več

Microsoft PowerPoint - Objekti_gradnja.ppt

Microsoft PowerPoint - Objekti_gradnja.ppt Naredimo razred Katera so stanja/lastnosti Kaj hočemo o objektih te vrste vedeti Kakšne lastnosti imajo Katere so metode Kakšno je znanje objektov Na katere ukaze se odzovejo Način predstavitve lastnosti

Prikaži več

Zadeva: Ponudba

Zadeva: Ponudba Navodila za urejanje Spletne strani CTEK.si 1. Dodajanje novega polnilnika Za dodajanje novega polnilnika nikoli ne prepisujte že objavljenih vsebin, ampak sledite tem navodilom. Ta so zagotovilo, da bodo

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Osnove jezika VHDL Strukturno načrtovanje in testiranje Struktura vezja s komponentami

Prikaži več

Microsoft PowerPoint - Java_spremenljivke

Microsoft PowerPoint - Java_spremenljivke Java Spremenljivke, prireditveni stavek Spremenljivke Prostor, kjer hranimo vrednosti Ime Znak, števka, _ Presledkov v imenu ne sme biti! Tip spremenljivke int (cela števila) Vse spremenljivke napovemo

Prikaži več

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefonih. Obstaja precej različic, sam pa sem sestavil meni

Prikaži več

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: 17.07.2013 Ver. 2.9.1.2 Spletni portal članov uporabniška navodila

Prikaži več

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk 1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatkov in njihov prenos med spletnimi mesti. Obrazec v

Prikaži več

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvantnih celičnih avtomatov SEMINARSKA NALOGA Univerzitetna

Prikaži več

Datum in kraj

Datum in kraj Ljubljana, 5. 4. 2017 Katalog znanj in vzorci nalog za izbirni izpit za vpis na magistrski študij Pedagoško računalništvo in informatika 2017/2018 0 KATALOG ZNANJ ZA IZBIRNI IZPIT ZA VPIS NA MAGISTRSKI

Prikaži več

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajanje prekinitvene rutine Dogodek GLAVNI PROGRAM (MAIN-OB1)

Prikaži več

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov Gospodarski subjekti Definicija: V skladu z 2. členom Izvedbene uredbe Komisije (EU) 2018/574

Prikaži več

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX 3.5 1. Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nastavitve strežnika ESX 3. Namestitev in nastavitve VM

Prikaži več

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) in za vsako napisati svojo kodo. Dve ikoni imata isto

Prikaži več

Slide 1

Slide 1 Projektno vodenje PREDAVANJE 7 doc. dr. M. Zajc matej.zajc@fe.uni-lj.si Projektno vodenje z orodjem Excel Predstavitev Najbolj razširjeno orodje za delo s preglednicami Dva sklopa funkcij: Obdelava številk

Prikaži več

Diapozitiv 1

Diapozitiv 1 RAČUNALNIŠKA ARHITEKTURA 5 Operandi RA - 5 2018, Škraba, Rozman, FRI Predstavitev informacije - vsebina 5 Operandi - cilji: Razumevanje različnih formatov zapisovanja operandov Abecede (znaki) Števila

Prikaži več

Microsoft Word - M _mod..docx

Microsoft Word - M _mod..docx Državni izpitni center *M17278113* JESENSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Ponedeljek, 28. avgust 2017 SPLOŠNA MATURA Državni izpitni center Vse pravice pridržane. M172-781-1-3 2 IZPITNA POLA 1 1

Prikaži več

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C#

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C# Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C# Pomen posameznih oken uporabniškega vmesnika, urejevalnik

Prikaži več

Oblikovanje in razvijanje spletnih strani

Oblikovanje in razvijanje spletnih strani Uporabniški vmesnik načrtovanje in izdelava Interaktivni mediji Doc. dr. Aleš Hladnik Načrtovanje uporabniškega vmesnika (UV) Načrtovanje oz. zasnova UV (User( interface design or engineering) je načrtovanje

Prikaži več

Microsoft PowerPoint - Java-rekurzija.ppt

Microsoft PowerPoint - Java-rekurzija.ppt Pesmica Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu je kos mesa, zato ga je ubil. Postavil mu je spomenik in nanj napisal: Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu

Prikaži več

Navodila Trgovina iCenter

Navodila Trgovina iCenter Napredovanja v plačne razrede javnih uslužbencev 2019 S pomočjo SAOP programa Kadrovska evidenca lahko ob dokupljeni kodi vodimo napredovanja javnih uslužbencev. Za napredovanja v letu 2019 je potrebno

Prikaži več

Orodje za izvoz podatkov

Orodje za izvoz podatkov Pomoč uporabnikom -NA-SI-200, V6.13-00 IZUM, 2018 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod... 1 2 Predstavitev orodja za izvoz podatkov...

Prikaži več

APS1

APS1 Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika Abstraktni podatkovni tipi Jurij Mihelič, UniLj, FRI Podatkovni tipi Razvil Pascal, Oberon itd. Software is

Prikaži več

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX 3.5 1. Dodajanje uporabnikov vajexx v skupino Vaje 2. Kopiranje Win2003 strežnika in registracija na

Prikaži več

(Microsoft Word - MSDN AA Navodila za \232tudente FS.doc)

(Microsoft Word - MSDN AA Navodila za \232tudente FS.doc) 1. Pogoji uporabe programske opreme Pred uporabo programske opreme iz programa MSDNAA morate prebrati in se strinjati s pogoji in določili Licenčne pogodbe za končnega uporabnika programske opreme MSDN

Prikaži več

Microsoft Word - CNC obdelava kazalo vsebine.doc

Microsoft Word - CNC obdelava kazalo vsebine.doc ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo mesto, april 2008 Ime in priimek študenta ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo

Prikaži več

Programska sprememba oddelka šole

Programska sprememba oddelka šole Pomoč uporabnikom Programska sprememba oddelka šole -NA-SI-355, V1.0 IZUM, 2018 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Navodila... 1 2 Postopek...

Prikaži več

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc) MORSE UČENJE PO KOCHOVI METODI Računalniški program za učenje skupaj z nekaterimi dodatnimi datotekami dobite na spletni strani avtorja: http://www.g4fon.net/. Zanimive strani so tudi: - http://www.qsl.net/n1irz/finley.morse.html

Prikaži več

COBISS3/Medknjižnična izposoja

COBISS3/Medknjižnična izposoja 3/Medknjižnična izposoja 2.2 KATALOG Katalog nam omogoča: iskanje gradiva prikaz izbranih bibliografskih zapisov ali pripadajočih podatkov o zalogi iz lokalne baze podatkov v formatu COMARC vpogled v stanje

Prikaži več

PowerPointova predstavitev

PowerPointova predstavitev INTRANET - DETEKTIV Detektivska zbornica Republike Slovenije Pozdravljeni, v kratki predstaviti in navodilih za delo z intranet sistemom Detektiv. Intranet članom Detektivske zbornice RS omogoča, da: -

Prikaži več

INFORMATOR BIROKRAT 1/2011

INFORMATOR BIROKRAT 1/2011 ta Veleprodaja Maloprodaja Storitve Računovodstvo Proizvodnja Gostinstvo Turizem Hotelirstvo Ticketing CRM Internetna trgovina Izdelava internetnih strani Grafično oblikovanje NOVOSTI IN NASVETI ZA DELO

Prikaži več

PRIPOROČILA ZA OBLIKOVANJE KATALOGOV ZNANJA ZA MODULE V PROGRAMIH VIŠJEGA STROKOVNEGA IZOBRAŽEVANJA

PRIPOROČILA ZA OBLIKOVANJE KATALOGOV ZNANJA ZA MODULE V PROGRAMIH VIŠJEGA STROKOVNEGA IZOBRAŽEVANJA KATALOG ZNANJA 1. IME PREDMETA ZBIRKE PODATKOV I ZBIRKE PODATKOV II 2. SPLOŠNI CILJI Splošni cilji predmeta so: razvijanje sposobnosti za uporabo znanstvenih metod in sredstev, razvijanje odgovornosti

Prikaži več

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / 24. 5. 2019 Uradni list Republike Slovenije PRILOGA 1 PRAVILA ZA OBLIKOVANJE

Prikaži več

Spoznajmo PowerPoint 2013

Spoznajmo PowerPoint 2013 Spoznajmo PowerPoint 2013 13 Nova predstavitev Besedilo v predstavitvi Besedilo, ki se pojavlja v predstavitvah lahko premaknemo kamorkoli v diapozitivu. Kadar izdelamo diapozitiv z že ustvarjenimi okvirji

Prikaži več

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik CNR-BTU3 Bluetooth vmesnik A. Vsebina pakiranja Bluetooth USB Adapter Bluetooth programska oprema in CD z gonilniki Navodila za uporabo in CD 1. Namestitev Bluetooth programske opreme za Windowse 1. Vstavite

Prikaži več

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se velikokrat zmoti. Na srečo piše v programu Microsoft

Prikaži več

Microsoft Word - CN-BTU4 Quick Guide_SI

Microsoft Word - CN-BTU4 Quick Guide_SI Bluetooth Dongle Artikel: CN-BTU4 NAVODILA v1.0 Sistemske zahteve Zahteve za PC: - Proc.: Intel Pentium III 500MHz or above. - Ram: 256MB ali več. - Disk: vsaj 50MB. - OS: Windows 98SE/Me/2000/XP - Prost

Prikaži več

Gimnazija Bežigrad Peričeva Ljubljana OPERACIJSKI SISTEM Predmet: informatika

Gimnazija Bežigrad Peričeva Ljubljana OPERACIJSKI SISTEM Predmet: informatika Gimnazija Bežigrad Peričeva 4 1000 Ljubljana OPERACIJSKI SISTEM Predmet: informatika KAZALO 1. Uvod...3 2. Predstavitev programa Windows 98...5 3. Raziskovanje računalnika...5 4. Raziskovanje Interneta...6

Prikaži več

Najprej si poglejmo učilnico. Za vse začetnike lahko tukaj najdete čudovito knjigo Python za programiranje. Poda odlično iztočnico za učenje. Priporoč

Najprej si poglejmo učilnico. Za vse začetnike lahko tukaj najdete čudovito knjigo Python za programiranje. Poda odlično iztočnico za učenje. Priporoč Najprej si poglejmo učilnico. Za vse začetnike lahko tukaj najdete čudovito knjigo Python za programiranje. Poda odlično iztočnico za učenje. Priporočam vam, da si v začetnih tednih vzamete par dni in

Prikaži več

Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje v Pythonu Program za računanje Maturitetna seminarska naloga iz informatike Kandidat:

Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje v Pythonu Program za računanje Maturitetna seminarska naloga iz informatike Kandidat: Zavod sv. Stanislava Škofijska klasična gimnazija Program za računanje Maturitetna seminarska naloga iz informatike Kandidat: Tinkara Čadež Mentor: Helena Starc Grlj Ljubljana Šentvid, april 2019 POVZETEK

Prikaži več

DES

DES Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Digitalni sistemi Vgrajeni digitalni sistemi Digitalni sistem: osebni računalnik

Prikaži več

Chapter 1

Chapter 1 - 1 - Poglavje 1 Uvod v podatkovne baze - 2 - Poglavje 1 Cilji (Teme).. Nekatere domene, kjer se uporabljajo podatkovne baze Značilnosti datotečnih sistemov Problemi vezani na datotečne sisteme Pomen izraza

Prikaži več

REŠEVANJE DIFERENCIALNIH ENAČB Z MEHANSKIMI RAČUNSKIMI STROJI Pino Koc Seminar za učitelje matematike FMF, Ljubljana, 25. september 2015 Vir: [1] 1

REŠEVANJE DIFERENCIALNIH ENAČB Z MEHANSKIMI RAČUNSKIMI STROJI Pino Koc Seminar za učitelje matematike FMF, Ljubljana, 25. september 2015 Vir: [1] 1 REŠEVANJE DIFERENCIALNIH ENAČB Z MEHANSKIMI RAČUNSKIMI STROJI Pino Koc Seminar za učitelje matematike FMF, Ljubljana, 25. september 2015 Vir: [1] 1 Nekateri pripomočki in naprave za računanje: 1a) Digitalni

Prikaži več

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov 4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenovalec, ter iz ulomkove črte. Racionalna števila so števila,

Prikaži več

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površe, pri tem pa zbrati čim več točk. Podobno igro najdemo tudi v knjigi Scratch (Lajovic, 2011), vendar

Prikaži več

DES

DES Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Model vezja Računalniški model in realno vezje Model logičnega negatorja Načini

Prikaži več

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA Navdih Poizvedovanje po BD podatkovnih virih, ki imajo časovno dimenzijo in so dostopni. Večji promet pomeni večje število dobrin in močnejšo

Prikaži več

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta 1978. Bila je ena izmed prvih streljaških iger, v kateri je igralec vodil laserski top ali vesoljsko ladjo,

Prikaži več

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte Navodila za uporabo programske opreme OTRS verzija 2.2.3 Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte kode Slovenije Spletna stran: http://www.coks.si/ Elektronski

Prikaži več

Microsoft PowerPoint - petek A-sambolicbeganovic [Read-Only] [Compatibility Mode]

Microsoft PowerPoint - petek A-sambolicbeganovic [Read-Only] [Compatibility Mode] KAKO PRI POUČEVANJU MATEMATIKE UPORABLJAM INTERAKTIVNO TABLO? Amela Sambolić Beganović SGGEŠ Ljubljana ŠOLSKI CENTER LJUBLJANA, Srednja lesarska šola amela.beganovic@guest.arnes.si Sirikt 2009, 17.4.2009

Prikaži več

Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj n

Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj n Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj novosti na področju SCADA sistemov (ifix Productivity

Prikaži več

Primerjava razvoja prave domorodne mobilne aplikacije in razvoja z uporabo ogrodja React Native

Primerjava razvoja prave domorodne mobilne aplikacije in razvoja z uporabo ogrodja React Native Univerza v Ljubljani Fakulteta za računalništvo in informatiko David Mihelj Primerjava razvoja prave domorodne mobilne aplikacije in razvoja z uporabo ogrodja React Native DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Vmesniki Vodila, vzporedni (paralelni) vmesniki Vmesniki in vodila naprava 1

Prikaži več

innbox_f60_navodila.indd

innbox_f60_navodila.indd Osnovna navodila Komunikacijski prehod Innbox F60 SFP AC Varnostna opozorila Pri uporabi opreme upoštevajte naslednja opozorila in varnostne ukrepe. Da bi v največji meri izkoristili najnovejšo tehnologijo

Prikaži več

Teorija kodiranja in kriptografija 2013/ AES

Teorija kodiranja in kriptografija 2013/ AES Teorija kodiranja in kriptografija 23/24 AES Arjana Žitnik Univerza v Ljubljani, Fakulteta za matematiko in fiziko Ljubljana, 8. 3. 24 AES - zgodovina Septembra 997 je NIST objavil natečaj za izbor nove

Prikaži več

Microsoft Word - NAVODILA ZA UPORABO.docx

Microsoft Word - NAVODILA ZA UPORABO.docx NAVODILA ZA UPORABO VODILO CCM-18A/N-E (K02-MODBUS) Hvala ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shranite za prihodnjo rabo. Vsebina

Prikaži več

Diapozitiv 1

Diapozitiv 1 Računalništvo in informatika Program: Mehatronika dr. Hubert Fröhlich, univ. dipl. el. Podatkovne baze 2 Podatkovne baze Podatki osnova za odločanje in izvajanje akcij tiskana oblika elektronska oblika

Prikaži več

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr NAVODILA ZA UPORABO Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta in jih shranite za prihodnjo rabo Vsebina 1. Pregled 2. Sistem 3. Prednosti 4. Upravljanje

Prikaži več

PowerPoint Presentation

PowerPoint Presentation Uporaba storitve Office 365 v napravi iphone ali ipad Priročnik za hiter začetek dela Ogled e-pošte Nastavite napravo iphone ali ipad tako, da boste lahko pošiljali in prejemali e-pošto iz računa v storitvi

Prikaži več

SPLETNA PRIJAVA NA IZPITE ZA DIJAKE Dijaki se na izpite prijavite na novem portalu novi.lopolis.si z istim uporabniškim imenom in geslom, kot ga upora

SPLETNA PRIJAVA NA IZPITE ZA DIJAKE Dijaki se na izpite prijavite na novem portalu novi.lopolis.si z istim uporabniškim imenom in geslom, kot ga upora SPLETNA PRIJAVA NA IZPITE ZA DIJAKE Dijaki se na izpite prijavite na novem portalu novi.lopolis.si z istim uporabniškim imenom in geslom, kot ga uporabljate tudi za portal Lo.Polis (www.lopolis.si), kjer

Prikaži več

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru 6.1 Uvod 6 Igra Chomp Marko Repše, 30.03.2009 Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru in na končni ali neskončni čokoladi. Igralca si izmenjujeta

Prikaži več

Diapozitiv 1

Diapozitiv 1 RAČUNALNIŠKA ARHITEKTURA 9 Pomnilniška hierarhija RA - 9 2018, Škraba, Rozman, FRI Pomnilniška hierarhija - vsebina 9 Pomnilniška hierarhija - cilji: Osnovno razumevanje : Lokalnosti pomnilniških dostopov

Prikaži več

EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino JB za DCTA, (Final 1.2) Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se n

EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino JB za DCTA, (Final 1.2) Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se n EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se nanaša na tobačne izdelke na trgu EU in na tobačne izdelke, izdelane v EU, vključno s tistimi

Prikaži več

Diapozitiv 1

Diapozitiv 1 Pogojni stavek Pogojni (if) stavek Tip bool Primerjanje Uranič Srečo If stavek Vsi dosedanji programi so se izvajali zaporedoma, ni bilo nobenih vejitev Program razvejimo na osnovi odločitev pogojnega

Prikaži več

SETCCE Uporabniška navodila za namestitev in upravljanje komponente SETCCE proxsign v2.0.5 za MAC OS X [Nova generacija komponent SETCCE proxsign ] Id

SETCCE Uporabniška navodila za namestitev in upravljanje komponente SETCCE proxsign v2.0.5 za MAC OS X [Nova generacija komponent SETCCE proxsign ] Id SETCCE Uporabniška navodila za namestitev in upravljanje komponente SETCCE proxsign v2.0.5 za MAC OS X [Nova generacija komponent SETCCE proxsign ] Identifikacijska oznaka dokumenta: n/a Različica dokumenta:

Prikaži več

Excel 2016

Excel 2016 PRIDOBIVANJE TEMELJN IH IN POKLICNIH KOMPETENC OD 2019 DO 2022 HIPERPOVEZAVA Gradivo za interno uporabo AVTOR: Belinda Lovrenčič Gradivo ni lektorirano V Maj 2019 Operacijo sofinancira Evropska unija,

Prikaži več

INFORMATOR BIROKRAT 1/2011

INFORMATOR BIROKRAT 1/2011 ta Veleprodaja Maloprodaja Storitve Računovodstvo Proizvodnja Gostinstvo Turizem Hotelirstvo Ticketing CRM Internetna trgovina Izdelava internetnih strani Grafično oblikovanje NOVOSTI IN NASVETI ZA DELO

Prikaži več

Diapozitiv 1

Diapozitiv 1 Vhodno izhodne naprave Laboratorijska vaja 4 - AV 4 Linije LTSpice, simulacija elektronskih vezij VIN - LV 1 Rozman,Škraba, FRI LTSpice LTSpice: http://www.linear.com/designtools/software/ https://www.analog.com/en/design-center/design-tools-andcalculators/ltspice-simulator.html

Prikaži več

Navodila:

Navodila: 1 Napišite zaporedje ukazov, ki vrednost enobajtne spremenljivke STEV1 prepiše v enobajtno spremenljivko STEV2. Nalogo rešite z neposrednim naslavljanjem (zaporedje lahko vsebuje le 2 ukaza v zbirniku

Prikaži več

Microsoft PowerPoint - OAPS1- P12.ppt

Microsoft PowerPoint - OAPS1- P12.ppt Univerza v Ljubljani Fakulteta za računalništvo in informatiko Igor Rožanc Osnove algoritmov in podatkovnih struktur I (OAPS I) 2. letnik, VSP Računalništvo in informatika, vse smeri PROSOJNICE ZA 12.

Prikaži več

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite vzorčne strani iz DELOVNIH LISTOV 1 v štirih delih

Prikaži več

Microsoft PowerPoint - seminar_ pptx

Microsoft PowerPoint - seminar_ pptx Leatalske informacije in ARO Slovenia Control Igor Čučnik, ARO Aleš Omahne, NOTAM Uroš Grošelj, AIP Brnik, 12.5.2018 Letalske informacije AIP AIP AMDT AIP SUP AIC NOTAM Serija A, B in C VFR karta Spletna

Prikaži več

Linksys PLEK500 User Guide

Linksys PLEK500 User Guide Uporabniški priročnik Linksys PLEK500 Omrežni vmesnik Powerline Vsebina Pregled............... 2 Funkcije..................... 2 Kako deluje omrežje Powerline 3 Primer namestitve 3 Namestitev omrežja Powerline.....

Prikaži več

Microsoft Word - bibliografske-zbirke-medicina.doc

Microsoft Word - bibliografske-zbirke-medicina.doc Univerza v Ljubljani Filozofska fakulteta Oddelek za bibliotekarstvo, informacijsko znanost in knjigarstvo Sistemi za poizvedovanje Bibliografske zbirke področje medicine Mentor: doc.dr. Jure Dimec Avtorja:

Prikaži več

CelotniPraktikum_2011_verZaTisk.pdf

CelotniPraktikum_2011_verZaTisk.pdf Elektrotehniški praktikum Osnove digitalnih vezij Namen vaje Videti, kako delujejo osnovna dvovhodna logi na vezja v obliki integriranih vezij oziroma, kako opravljajo logi ne funkcije Boolove algebre.

Prikaži več

Navodila za uporabo Mini snemalnik

Navodila za uporabo Mini snemalnik Navodila za uporabo Mini snemalnik www.spyshop.eu Pred vami so navodila za pravilno uporabo mini snemalnika in opis funkcionalnosti. Lastnosti snemalnika: Naziv Mere Teža Kapaciteta spomina Snemanje Format

Prikaži več

DES11_realno

DES11_realno Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Delovanje realnega vezja Omejitve modela vezja 1 Model v VHDLu je poenostavljeno

Prikaži več

Elektronska pošta

Elektronska pošta Elektronska pošta ZGODOVINA Prvo sporočilo je bilo poslano leta 1971. Besedilo, ki ga je vsebovalo, je bilo QWERTYUIOP. Pošiljatelj je bil Ray Tomlinson, računalnika med katerima je bilo sporočilo poslano

Prikaži več

ACAD-BAU-Analiza-prostorov

ACAD-BAU-Analiza-prostorov ANALIZA PROSTOROV Ko obdelujemo večje projekte, je analiza prostorov zelo pomembna v vseh fazah projektiranja. Pri idejnem snovanju moramo npr. za določeno površino trgovske namembnosti zagotoviti primerno

Prikaži več

PowerPointova predstavitev

PowerPointova predstavitev Dostopnost elektronskih virov za slepe, slabovidne in druge osebe z motnjami branja Kristina Janc ZSSML - 27. Seja TIFLO sekcije 22.3.2012 Možnost izkoriščanja elektronskih virov za slepe, slabovidne in

Prikaži več

INTERAKTIVNE REŠITVE PROMETHEAN

INTERAKTIVNE REŠITVE PROMETHEAN INTERAKTIVNE REŠITVE PROMETHEAN Promethean je vodilni svetovni ponudnik interaktivne tehnologije na področju izobraževanja. S svojim inovativnim pristopom in vizijo prihodnosti, spreminjajo način sodelovanja

Prikaži več