Größe: px
Ab Seite anzeigen:

Download ""

Transkript

1 CACAO-EineezienteJavaVM Implementierung InstitutfurComputersprachen TechnischeUniversitatWien Argentinierstrae8 AndreasKrall ZusammenfassungCACAOisteineezienteImplementierungeiner A-1040Wien JavaVM,dieaufJust-In-TimeUbersetzungberuht.CACAOubersetzt wahrendderlaufzeitdieaufgerufenenmethodenaufmaschinencodefur ZwischencodeindenregisterbasiertenMaschinencodevonRISC-Prozessorenum.DabeiwerdenBefehlekombiniert,Kopierbefehleentfernt unddenvariablenmaschinenregisterzugewiesen.beiderentwicklung Speicherverbrauchgeachtet.CACAOistzurZeitdieschnellsteJavaVM ZyklenfurdieUbersetzungeinesZwischencodebefehls. denalphaprozessor.derubersetzerformtdabeidenstackbasierten desubersetzerswurdeaufextremkurzeubersetzungszeitundgeringen ImplementierungfurdenAlpha-Prozessorundbenotigtwenigerals1000 auchfuranderezielarchitekturenzuubersetzen. Moglichkeitengeschaen,denerzeugtenMaschinencodeabzuspeichern, undnichtnurjust-in-time,sonderndasganzeprogrammaufeinmal, PowerPC-undSparc-Prozessorerweitert.Gleichzeitigdazuwerdendie ZurZeitwirdCACAOumMaschinencodegeneratorenfurdenMIPS-, 1Einleitung Java's[AG96]ErfolgalsProgrammiersprachekommtvonseinerRollealsInter- einembrowserausgefuhrtwerden,istaberbeigroenprogrammenoderzeitkritischenanwendungeninakzeptabel.zweilosungenfurdiesesproblembieten DieStandardimplementierungderJavaVMalsInterpretermachtdieAusfuhrung unabhangigedarstellungvonprogrammenimzwischencodederjavavm[ly96]. vonprogrammenlangsam.dasspieltkeinerolle,wennkleineanwendungenin net-programmiersprache.diegrundlagefurdiesenerfolgistdiemaschinen- sichan: alsauchubersetzer.mitcacaohabenwirunsfurubersetzerentschieden,da {spezialisiertejava-prozessoren dieseransatzportableristundmehrmoglichkeitenfuroptimierungenbietet {UbersetzungdesZwischencodesaufMaschinencode SUNhatbeideWegeeingeschlagenundentwickeltsowohlJava-Prozessoren

2 deraufgerufenenmethodenwahrendderlaufzeit(just-in-timeubersetzer). werden:ubersetzungdesgesamtenprogrammsaufeinmaloderubersetzung [KEG98].DieUbersetzungaufMaschinencodekannaufzweiArtendurchgefuhrt CACAOunterstutztbeideMethoden.CACAOundseineImplementierungsind inmehrerenartikelnbeschrieben[kg97][kp98]undistuberdasinternetfrei erhaltlich. 2VerwandteArbeiten miersprachenaufunterschiedlichearchitekturenzulosen. salcomputerorientedlanguage)wurdefureineverwendunginubersetzern DieIdeemaschinenunabhangigerZwischendarstellungenistschonsehraltund vorgeschlagen,umdasproblemderubersetzungvielerverschiedenerprogram- gehtbisindasjahr1960zuruck[ste61].diezwischenspracheuncol(universchinevonpascal[pd82],beeinut.p-codeerlangtegroenbekanntheitsgrad durchseineverwendungimucsd-pascal-system.genausowiebeiderjavavm dieseprozessorenabernichterfolgreich. gabesmikroprozessoren,diep-codedirektausfuhrenkonnten.ammarktwaren DasDesignderJavaVMwurdesehrstarkvonP-Code,dervirtuellenMadarstellungdesGardensPointUbersetzersberuhtauchaufeinerStackmaschine, diedcodegenanntwurde[gou97].dcodewurdestarkvonp-codebeeinut. siertezwischendarstellung.diesedarstellungwurdeentworfen,umtrotzkurzer UbersetzungszeitenschnellenMaschinencodeerzeugenzukonnen.DieZwischen- DasAmsterdam-Compiler-Kit[TvSKS83][TKLJ89]verwendeteinestackba- FurDcodewurdensowohlInterpreteralsauchUbersetzerfurverschiedeneArchitekturenentwickelt. auftreten,sindauchvonderprogrammierspracheforthbekannt.inseinerdoktorarbeit[ert96]undin[ep97]beschreibtantonertlrafts,einforthsystem, dasmaschinencodewahrendderlaufzeiterzeugt.dieubersetzunginmaschi- DieProbleme,diebeiderUbersetzungvonStackcodenachMaschinencode nencodeerfolgtubereinenzwischenschritt,inwelchemdiestackbefehlewieder inarithmetischeausdruckezuruckubersetztwerden,dieineinemazyklischen gerichtetengraphendargestelltwerden.in[em95]ubersetztertldieprogrammierspracheforthunterverwendungvoncaufmaschinencode.dabeiwerden StackzellendurchlokaleVariableneinerC-Funktiondargestellt.Optimierung lungsumgebungvonsymantec.sunbrachteauchjitubersetzerfursparc- undpowerpc-prozessorenheraus,sgifurmips-prozessorenundvorkurzem DieerstenJITUbersetzerkamenvorzweiJahrenvonSUNundfurdie BrowservonNetscapeundMicrosoftheraus.DarauffolgtebalddieEntwick- undmaschinencodeerzeugungwerdendannvomc-ubersetzerdurchgefuhrt. DigitalfurdenAlpha-Prozessor.KaeisteinfreiverfugbarerJITUbersetzer dervontimwilkinsonentwickeltwurde( dieseerwahntensystemegibteskeinebeschreibungderverwendetenubersetzungstechniken. 2

3 denstackdurchregister.caeineistkeinjitubersetzer,esubersetzteinkomplettesprogrammimvorhinein.daisy(dynamicallyarchitectedinstruction Kollegenbeschrieben[HGH96].EswerdendabeizweiUbersetzungmethodenverwendet.DieeinfacheMethodeemuliertdenStack,diebessereMethodeersetzt DasUbersetzungsschemavonCaeinewirdimArtikelvonHsiehundseinen dezuermoglichen.diekompatibiliatmitaltenarchitekturenwirddabeidurch SetfromYorktown)isteineVLIWArchitekturdiebeiIBMentwickeltwurde, JITUbersetzungermoglicht.DerUbersetzerfurdieJavaVMistin[EAH97] umeineezienteausfuhrungvonpowerpc,s/390undjavavmmaschinenco- beschrieben. thodedermaschinencodeerzeugungfureinenjitubersetzer.dieserubersetzer machtoptimierungenwieeliminationvonbereichsuberprufungen,auswertung vongemeinsamenteilausdruckenundzweiverschiedeneartenvonregisterzuteilung,eineeinfacheundeineglobaleaufprioritatenbasierte.dieergebnisse Adl-TabatabaiundseineKollegen[ATCL+98]beschreibeneineezienteMe- zeigen,dafurvielebenchmarkprogrammediekomplexeregisterzuteilungmehr 3UbersetzungszeitverbrauchtalsdurchkurzereLaufzeitwiedereingebrachtwird. DieJavaVMisteinegetypteStackmaschine[LY96]mitunterschiedlichenBefehlenfurganzeZahlen,FliekommazahlenundZeiger.DerBefehlsatzbesteht Ubersetzungsgrundlagen ausarithmetisch/logischenbefehlen,vergleichs-undsprungbefehlen,befehlen furvariablen-undspeicherzugri,methodenaufruf,typuberprufungundsyn- chronisation.dasfolgendebeispielzeigtdiezwischendarstellungfurdiejava- Zuweisunga=b-c*d. iloadb iloadc iloadd imul isub ;pushcontentsofvariablec ;pushcontentsofvariableb ;pushcontentsofvariabled ;computec*d StackarchitekturderJavaVM.RISC-ProzessorenhabeneinengroenRegistersatz(derAlpha-Prozessorbesitzt32Ganzzahl-und32Fliekommazahlregister, zwischenspeicherundregister.dielokalenvariableneinermethodebenden sichnormalerweiseinregisternundwerdennurindenspeicherausgelagert, wennzuwenigregistervorhandensindoderaufrufvorschriftenesverlangen. welchealle64bitbreitsind).arithmetisch/logischebefehlewerdennuraufdatenausgefuhrt,diesichinregisternbenden.speicherbefehlebewegendiedaten istorea;popstacktopintovariablea DieArchitekturvonRISC-Prozessorenunterscheidetsichwesentlichvonder ;computeb-(c*d) werden(dievariablena,b,cunddbendensichinregistern): mierendenubersetzerindiefolgendenzweialpha-maschinenbefehleubersetzt DievorhergehendeJavazuweisunga=b-c*dwurdevoneinemopti- 3

4 StackvollstandigeliminiertunddieeinzelnenStackzellenwerdendurchtemporareVariablenersetzt,diesichnormalerweiseinRegisternbenden.Einenaivgen:MOVEb,t0 UbersetzungdesvorhergehendenBeispielswurdefolgendeAlpha-Befehleerzeu- WennJavaVMZwischencodeaufMaschinencodeubersetztwird,wirdder SUBLb,tmp0,a MULLc,d,tmp0 ;a=b-tmp0 ;tmp0=c*d MULLt1,t2,t1 SUBLt0,t1,t0 MOVEd,t2 MOVEc,t1 ;imul ;isub ;iloadd ;iloadc ;iloadb MethodezumEntfernenoderVermeidenderKopierbefehlenotig.Weitersmu einschnelleralgorithmsfurdieregisterzuteilungangewendetwerden. UmJavaVM-BefehleaufMaschinencodeabzubilden,istdahereineeziente MOVEt0,a ;istorea Befehleaufgebaut,dieeinfacherzuDekodierenist.ImzweitenDurchgangwird 4DerCACAOUbersetzer derstackanalysiert,wobeieinedatenstrukturerzeugtwird,dieeinerstatischen Stackdarstellungentspricht.GleichzeitigwerdendabeiBefehlekombiniert,VariablenabhangigkeitenuberpruftundderRegisterbedarfbestimmt.ImletzteporarenRegisterzugeteilt. 4.1Grundblockschnittstellendenition DurchgangwerdengleichzeitigmitderMaschinencodeerzeugungauchdietem- DieUbersetzungerfolgtindreiDurchgangen.ImerstenDurchgangwerden diegrundblockebestimmtundeswirdeinezwischendarstellungderjavavmwirddabeidertypdesregistersbestimmtundobderinhaltdesregistersubeblockgrenzewirdeinemxenregisterzugewiesen.wahrendderstackanalysdertaufwendigeverfahren.wirhabendahereinexeschnittstellendenition andengrenzenvongrundblockenfestgesetzt.jedestackzelleaneinergrund- EineoptimaleRegisterzuteilungbeiderVereinigungvonKontrollussenerforwirkungendieserxenRegisterschnittstellezuuntersuchen,habenwireineAnalyseaneinergroenJava-Anwendung,demjavacUbersetzerundallenseinen Bibliotheksmethoden,durchgefuhrt.Tabelle1zeigt,dainmehrals93%aller erhohen,unterbrechenmethodenaufrufenichteinengrundblock.umdieaus- Methodenaufrufeerhaltenbleibenmu.UmdieGroevonGrundblockenzu diequalitatdeserzeugtenmaschinencodeshat. Damitwirdklar,dadiesexeRegisterzuteilungkeinennegativenEinuauf FallederStackanGrundblockgrenzenleeristunddiemaximaleStacktiefe6ist. 4

5 Tabelle1.VerteilungderStacktiefeanGrundblockgrenzen Schnittstellen >6 4.2EntfernenvonKopierbefehlen wahrendderabarbeitungdesprogrammesauftretenwurde. UmunnotigeKopierbefehlezuentfernen,wirddasLadenvonDatensolange verzogert,bisdieinstruktionerreichtwird,diediesedatenbenotigt.abbildung derlaufzeitstacksonderneinestatischedarstellungdesstackzustandes,wieer 1zeigtdieBefehls-undStackdarstellungdesUbersetzers.DieserStackistnicht b?c?d imul c*d? EinBefehlhatZugriaufdenStackvorundnachderAusfuhrungdesBefehls.DerStackwirddabeidurcheinelineareListedargestellt.DiebeidenStacks Abbildung1.Befehls-undStackdarstellung sondernauchinformationendarubervonwelcherlokalenvariablendiesezelle werden.diesedarstellungkannnuneinfachfurdievermeidungvonkopierbefehlenverwendetwerden.jedestackzelleenthaltnichtnurdentypdieserzelle, konnendabeialsdiequelloperandenundderzieloperanddesbefehlsgesehen Variable. DerBefehl,derdieseZellealsQuelloperandbenotigt,verwendetdirektdielokale einekopieist.kopierbefehlevonvariablenanstackzellenwerdennichterzeugt. lokalevariableaufeinestackzelle(register)kopiertwerdenunddiesekopie spatereverwendungdieservariablenungultig.umdaszuvermeidenmudie istoreaschreibteinenneuenwertindievariableaundmachtdamiteine spielvonabb.2enthaltderstackeinkopiederlokalenvariablena.derbefehl ProblememitdieserMethodekonnenbeistore-Befehlenauftreten.ImBei- verwendetwerden. DaderStackalslineareListedargestelltist,mubeistore-Befehlendie- 5

6 iloada? dup iconst1iaddistorea a? a? 1??+ Abbildung2.Abhangigkeiten selistenachkopienvonlokalenvariablendurchsuchtwerden.tabelle2gibt dieverteilungderstacktiefebeistore-befehlenan.diestacktiefeisthierfast immer0. Tabelle2.VerteilungderStacktiefebeistore-Befehlen stackdepth0123>3 occurrences nenvonstore-befehlenanbefehlezuruckzubringen,dieeinergebnisberechnen undesineinerstackzelleablegenwurden.dabeigibtesahnlicheproblememit Abhangigkeitenzulosen. DiesestatischeStackdarstellungwirdauchdazuverwendet,umInformatio- 4.3Registerzuteilung nummerzu,wennsichdielebensbereichedieservariablennichtuberlappen. DerjavacUbersetzerteiltverschiedenenlokalenVariablendieselbeVariablen- StackzellenhabenihrenLebensbereichimplizitdurchihreStackpositiongekennzeichnet.WahrendderStackanalysewerdenStackzellengekennzeichnet,deren InhaltubereinenMethodenaufrufhinwegerhaltenbleibenmussen.DiesenStack- DaherwerdenArgumentregisterunddasRuckgaberegistervonMethodenahnzellenundlokalenVariablenwerdendanngesicherteRegisterzugeteiltlichbehandeltwiestore-Befehle. EinschnellerMethodenaufrufistfurdieGeschwindigkeitvonJavawichtig. AufwendigeRegisterzuteilungsalgorithmensindwederangebrachtnochnotig. 6

7 4.4KombinationvonBefehlen ZusammenmitderStackanalysewerdenBefehle,dieKonstantenladen,mitauslenBefehlewieiadd,isub,imul,idiv,logischeundVerschiebebefehleunpruft,obderWertderKonstantenimgultigenBereichfurMaschinenbefehleliegt Vergleichs-undSprungbefehle.WahrendderMaschinencodeerzeugungwirdubergewahltenBefehlenkombiniert,diedirektdarauffolgen.IndieseKlassefal- 4.5Beispiel undentsprechendermaschinencodeerzeugt. sterzuteilungvonlokalenvariablenan.derjava-ubersetzerverwendetdieselbe VariablennummerfurunterschiedlichelokaleVariablen,wennsichdieGultigkeitsbereichenichtuberlappen.IndiesemBeispielwirddieVariablennummer DasBeispielinAbbildung3zeigtdieZwischendarstellungdesUbersetzerswie siefurfehlersucheverwendetwird.localtablegibtdietypenunddieregi- 3sogarfurVariablenunterschiedlichenTypsgenutzt(ganzeZahlundAdresse).DerJIT-UbersetzerhatdasgesicherteRegistermitderNummer12dieser Variablenzugeteilt. wendigereralgorithmuszumentfernenderkopierbefehleeinargumentregister faceregisterbenotigt.ambeginndesgrundblockswirddasinterfaceregisterin dasargumentregistera00kopiert.diesisteinerderseltenenfalle,woeinauf- furdasinterfaceverwendenhattekonnen. FurdenGrundblockmitdemNamenL004wirdindiesemBeispieleinInter- hatbereitsdielokalevariablel02alsziel,eineinformationdievomnachfolgendenbefehlistorekommt.inahnlicherweisehatderbefehlinvokestatic freiezellemiteinemleerbefehluberschriebenwerden.derbefehliaddconst miteinemrechenbefehl.dadiebefehleineinemfeldgespeichertsind,mudie BeidenBefehlen2und3erkenntmandieKombinationeinerKonstanten mitdernummer31alleseineoperandenalsargumentregistermarkiert.indiesembeispielwerdenallekopierbefehle(mitausnahmedesinterfaceregisters) entfernt. 4.6Just-In-TimeUbersetzer ZuBeginnwerdenalleZeigerinderMethodentabellemitZeigernaufdenUber- Modus,indemderUbersetzerMaschinencodefuralleMethodenerzeugtund setzerinitialisiert.wirddannderubersetzeraufgerufen,wirddererzeugtema- schinencodeindenspeichergeschriebenunddanachdieneuerzeugtemethode aufgerufen. gen.gegenwartigarbeitenwirdaran,diemaschinencodegeneratorenfurmips-, istauchgeeignet,ummaschinencodefureineanderezielarchitekturzuerzeu- dieseaufeinedateiausgibt,ohnediemethodenaufzurufen.diesermodus UmdieFehlersucheimCACAO-Ubersetzerzuerleichtern,gibteseinen gebettetesystemezuverbessern. PowerPC-undSparc-ProzessorenzuentwickelnunddieUnterstutzungfurein- 7

8 DieDarstellungvonObjektenundKlassenwurdesoentworfen,daeinschneller ZugriaufObjekteundMethodenbeigeringemSpeicherverbrauchmoglichist. 4.7DarstellungvonObjekten Klasse.FurdieKlassendarstellunggibteszweiVarianten.Inderkompakteren VarianteenthalteineKlassedieZeigertabelledervirtuellenFunktionenundmit InCACAOenthaltenObjektedieInstanzvariablenundeinenZeigeraufdie negativemosetdieinterfacetabelle(abbildung4).furjedesimplementierte InterfaceexistierteinZeigeraufdievirtuelleFunktionstabellederInterfaces. den,dieininterfacesverwendetwerden,mitnegativemosetzumklassenzeiger gespeichert(abbildung5).durchdieunterscheidungininterfacemethodenund virtuellemethodenbleibtdienormalezeigertabelleunverandertundauchdie Interfacemethodentabellewirdkleiner.TrotzdemistderSpeicherverbrauchfur InderschnellerenVariantewerdenInterfacemethoden,dassindalleMetho- starkreduziertwerden.werdenklassendynamischgeladen,dannhatdiesemethodeallerdingsdennachteil,dasichdieosetsunterumstandenandern dieinterfacemethodentabellequadratisch(anzahlderklassenmitinterfaces* AnzahlderInterfacemethoden).MittelsselectorcoloringkanndieAnzahlderunterschiedlichenOsetsfurInterfacemethodenunddamitderSpeicherverbrauch konnenunddaheranderungenimbereitserzeugtenmaschinencodenotwendig PortierungvonSun'sJDKInterpreter,demJIT-UbersetzerkaeunddemJIT- 5Ergebnisse UmdieGeschwindigkeitvonCACAOzutesten,habenwirCACAOmiteiner langsameralsbeisun'sinterpreter. mitdersynchronisation(sieheauch[kp98]),dahersindhierdiezeitendreimal UbersetzervonDigitalverglichen(sieheTabelle3.DigitalsSystemhatProbleme prufungendurchfuhrt,istdieservergleichfair. CACAOschaltetdieBereichsuberprufungaus.DaCauchkeineBereichsuber- Tabelle4vergleichtCACAOmiteinemCUbersetzer.DieOption-cbvon 6Zusamenfassung WirhabenCACAOundseinenUbersetzerbeschrieben.CACAOistdiezurZeit schnellstejavavm-implementierungfurdenalpha-prozessor.cacaowirdum CodegeneratorenfurandereProzessorenerweitertundhatUnterstutzungfur 7Danksagung eingebettetesysteme.cacaokannviawwwbezogenwerden: IchdankeReinhardGraundMarkProbstfurKorrekturendiesesArtikels. 8

9 runtimeon21064a300mhz(inseconds) JDKJavaLexjavacespressoTobajavacup DigitalInterpr. kae numberofcompiledjavavminstructions DigitalJIT CACAO speedupwithrespecttointerpreter speedupjdk/dec-jit speedupjdk/kae Tabelle3.VergleichvonJDK,kae,DigitalsJITundCACAO speedupjdk/cacao [ATCL+98]Ali-RezaAdl-Tabatabai,MichalCiernak,Guei-YuanLueh,VisheshM. References [AG96] Parikh,andJamesM.Stichnoth.Fast,eectivecodegenerationinajustin-timeJavacompiler.InConferenceonProgrammingLanguageDesign KenArnoldandJamesGosling.TheJavaProgrammingLanguage. Addison-Wesley,1996. [EAH97]KemalEbcioglu,ErikAltman,andErdemHokenek.AJavaILPmachinebasedonfastdynamiccompilation.InMASCOTS'97-International EuroForth'95,1995. andimplementation,volume33(6)ofsigplan,pagetoappear,montreal, [EM95] 1998.ACM. [EP97] WorkshoponSecurityandEciencyAspectsofJava,1997. M.AntonErtlandMartinMaierhofer.TranslatingForthtonativeC.In [Gou97] [Ert96] chines.phdthesis,technischeuniversitatwien,april1996. K.JohnGough.Multi-language,multi-targetcompilerdevelopment:EvolutionoftheGardensPointcompilerproject.InHanspeterMossenbock, M.AntonErtl.ImplementationofStack-BasedLanguagesonRegisterMa- compiler.ineuroforth'97conferenceproceedings,pages107{116,1997. M.AntonErtlandChristianPirker.ThestructureofaForthnativecode [HGH96]Cheng-HsuehA.Hsieh,JohnC.Gyllenhaal,andWen-meiW.Hwu.Java bytecodetonativecodetranslation:thecaeineprototypeandpreliminaryresults.in29thannualieee/acminternationalsymposiumon editor,jmlc'97{jointmodularlanguagesconference,linz,1997.lncs [KEG98]AndreasKrall,AntonErtl,andMichaelGschwind.JavaVMimplementations:Compilersversushardware.InJohnMorris,editor,Australian Microarchitecture(MICRO'29),

10 runtimeon21064a300mhz(inseconds) Digitalinterpr.70.3 JDK sieveadditionlinpack DigitalJIT6.27 kae GCC-O relationofruntime CACAO-cbruntimeonly3.31 CACAOtotal speedupjdk/cacao-cb24.1 speedupjdk/dec-jit13.3 speedupjdk/cacao18.2 speedupjdk/kae speedupjdk/gcc Tabelle4.VergleichvonJDK,kae,DigitalsJITundCACAO CACAO-cbnfrun/GCC [KG97] ComputerScienceCommunications,pages101{110,Perth,1998.Springer. ComputerArchitectureConference(ACAC'98),volume20(4)ofAustralian [KP98] mentjavaeciently.insiamakhassanzadehandklausschauser,editors, timecompiler.concurrency:practiceandexperience,9(11):1017{1030, AndreasKrallandMarkProbst.Monitorsandexceptions:Howtoimple- AndreasKrallandReinhardGra.CACAO{a64bitJavaVMjust-in- [LY96] [PD82] 15{24,PaloAlto,March1998.ACM. TimLindholmandFrankYellin.TheJavaVirtualMachineSpecication. Addison-Wesley,1996. StevenPembertonandMartinC.Daniels.PascalImplementation,TheP4 ACM1998WorkshoponJavaforHigh-PerformanceComputing,pages [Ste61] [TKLJ89]A.S.Tanenbaum,M.F.Kaashoek,K.G.Langendoen,andC.J.H.Jacobs.Thedesignofveryfastportablecompilers.ACMSIGPLANNotices, 24(11):125{131,November1989. Compiler.EllisHorwood,1982. T.B.Steel.ArstversionofUNCOL.InProceedingsoftheWestern [TvSKS83]AndrewS.Tanenbaum,HansvanStaveren,E.G.Keizer,andJohanW. JointIRE-AIEE-ACMComputerConference,pages371{377,1961. cationsoftheacm,16(9):654{660,september1983. Stevenson.Apracticaltoolkitformakingportablecompilers.Communi- ThisarticlewasprocessedusingtheLATEXmacropackagewithLLNCSstyle 10

11 java.io.bytearrayoutputstream.write(int)void LocalTable: 1: 2: 3: 0: (int)s14 (int)s13 (int)s12(adr)s12 (adr)s15 InterfaceTable: L00] 0: (int)t24 T23] 0ALOAD 1GETFIELD 2IADDCONST 3NOP 4ISTORE 16 5ILOAD 1 L00L02] 6ALOAD T23L02] 7GETFIELD 8ARRAYLENGTH 9IF_ICMPLE 208 ]L002:... 18IF_ICMPLT L003 L005 A00]L004: I00] ]L003: 21ILOAD 20GOTO 19ILOAD 2L004 L03] ] 22BUILTIN1 23ASTORE newarray_byte A02A01A00] A01A00] A00] L00] 27ALOAD 26ICONST 25GETFIELD 24ALOAD 8 [L00A03A02A01A00] [A04A03A02A01A00] 28ICONST 29ALOAD 30GETFIELD L03L00] L00] 33ALOAD 31INVOKESTATICjava.lang.System.arraycopy 32ALOAD 16 ]L005:... 34PUTFIELD 380 [ Abbildung3.Beispiel:Befehls-undStackdarstellung ] 45RETURN 11

12 objectpointerobject class -instancedata classpointer -interfacepointer methodpointer classinfo methodpointer interfaces - - Abbildung4.kompakteObjekt-undKlassendarstellung methodcode objectpointerobject class -instancedata classpointer - ifmethodpointer methodpointer classinfo -methodcode Abbildung5.schnelleObjekt-undKlassendarstellung methodcode 12

Praktikum Compilerbau Sitzung 9 Java Bytecode

Praktikum Compilerbau Sitzung 9 Java Bytecode Praktikum Compilerbau Sitzung 9 Java Bytecode Prof. Dr.-Ing. Gregor Snelting Matthias Braun und Sebastian Buchwald IPD Snelting, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg

Mehr

Compilerbau. Martin Plümicke WS 2018/19

Compilerbau. Martin Plümicke WS 2018/19 Compilerbau Martin Plümicke WS 2018/19 Agenda I. Überblick Vorlesung Literatur II. Compiler Überblick III. Überblick Funktionale Programmierung Einleitung Haskell-Grundlagen IV. Compiler Scanner Semantische

Mehr

Informatik II Übung 5. Pascal Schärli

Informatik II Übung 5. Pascal Schärli Informatik II Übung 5 pascscha@student.ethz.ch Warm - Up Warm - Up public static int power(int base, int exp) { int out=1; for(int i = 0; i

Mehr

Java Bytecode Eike Robert Freie Universität Berlin. Softwareprojekt Übersetzerbau, 2013

Java Bytecode Eike Robert Freie Universität Berlin. Softwareprojekt Übersetzerbau, 2013 Java Bytecode Eike Robert Freie Universität Berlin Softwareprojekt Übersetzerbau, 2013 Inhalt Bytecode Allgemein Architektur Aufbau Instruktionsgruppen Beispiel FU Berlin, Bytecode, Übersetzerbau 2013

Mehr

Informatik II Übung 4. Pascal Schärli

Informatik II Übung 4. Pascal Schärli Informatik II Übung 4 pascscha@student.ethz.ch Nachbesprechung Serie 3 - Aufgabe 1 Schleifeninvariante: z+u j=i j Nach der while-scheife: u=0 z= i j Was passiert wenn man das Programm so abändert? Schleifeninvariante

Mehr

Java-Bytecode: Der Blick unter die Haube

Java-Bytecode: Der Blick unter die Haube Projektgruppe Verteilung von parallelen Java-Anwendungen Java-Bytecode: Der Blick unter die Haube Struktur von Klassendateien Befehlssatz der Übersetzung grundlegender Java-Konstrukte Wichtige Java-Konstrukte

Mehr

Java Virtual Machine (JVM) Übersicht

Java Virtual Machine (JVM) Übersicht Java Virtual Machine (JVM) Alan Dingwall dingwall@gmx.net Übersicht Was ist die Java Virtual Machine DasClass File Format Aufbau der JVM Kompilation.java.class Fazit Quellennachweise Was ist die JVM Abstrakter

Mehr

Java Virtual Machine

Java Virtual Machine Seite 1 von 9 1 Was ist die JavaVM Java Virtual Machine Die JavaVM könnte man als einen virtuellen Computer betrachten, der speziell dafür kompilierten Java-Code ausführen kann. Der Begriff "virtuell"

Mehr

Rekursion. L. Piepmeyer: Funktionale Programmierung - Rekursion

Rekursion. L. Piepmeyer: Funktionale Programmierung - Rekursion Rekursion 1 Iterative und rekursive Methoden Summe von 1 bis n berechnen: iterativ rekursiv public int sum(int n){ int result = 0; for(int i=1; i

Mehr

Informatik II - Tutorium 5

Informatik II - Tutorium 5 Informatik II - Tutorium 5 Vincent Becker vincent.becker@inf.ethz.ch 28.03.2018 Vincent Becker 28.03.2018 1 Neue Webseite Vincent Becker 28.03.2018 3 Allgemeines Java-Konvention: Alle Variablen- und Methodennamen

Mehr

Beuth Hochschule Die virtuelle Java Maschine (JVM) WS13/14

Beuth Hochschule Die virtuelle Java Maschine (JVM) WS13/14 Inhaltsverzeichnis Die virtuelle Java Maschine (JVM)...1 1. Harte und weiche Maschinen...1 2. Ein Bytecode-Programm...2 3. Java-Assembler-Dateien...5 4. Die Maschinenbefehle der JVM...6 5. Alle Maschinenbefehle,

Mehr

Informatik II Übung 5 Gruppe 4

Informatik II Übung 5 Gruppe 4 Informatik II Übung 5 Gruppe 4 (Folien teils von Christian B. und Christelle G.) Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 5 Lukas Burkhalter 27. März 2018 1 Nachbesprechung Letzte Übung (4)

Mehr

Java-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool.

Java-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz Datentypen Operanden-Stack Konstanten-Pool Methoden-Area Heap für Laufzeit-Daten Class File Format 26 Die Java Virtual Machine Java Instruktions-Satz

Mehr

Overview of Stuttgart s Suburbs

Overview of Stuttgart s Suburbs Ovv V V Cy C V V T + ( ) X* ( F) Z (),X*,, +,, +,X*,X* () vv L Fä F O T IC,C F V v V öv öv, +,X* F/ T / T L () L T O + T VVT * VVT F F/ T F X* / O C ö I O ö O ä I F I L I I F L F V I ä L L L ö C O L L

Mehr

Inhaltsverzeichnis 1

Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 Kapitel 1 Bytecode, JVM, Dynamische Compilierung Am Beispiel des IBM Jalapeno-Compilers (besser als SUN!) 1 1 Abbildungen aus: IBM Systems Journal, Vol 39 Nr 1 2 1.1. LAUFZEITORGANISATION

Mehr

Statische Analyse. Holger Hans Peter Freyther 1. Seminar zu Ursachen und Vermeidung von Fehlern in der Softwareentwicklung, 2006

Statische Analyse. Holger Hans Peter Freyther 1. Seminar zu Ursachen und Vermeidung von Fehlern in der Softwareentwicklung, 2006 Übersicht Holger Hans Peter Freyther 1 1 Freie Universität Berlin Seminar zu Ursachen und Vermeidung von Fehlern in der Softwareentwicklung, 2006 Übersicht Übersicht 1 Was ist es? Analysewerkzeuge 2 Find

Mehr

Informatik II (D-ITET) Übungsstunde 5,

Informatik II (D-ITET) Übungsstunde 5, Informatik II (D-ITET) Übungsstunde 5, 30.04.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Besprechung von Übung 4 More Java insights (Call by Value und Call by

Mehr

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen.

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen. HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen OOPM, Ralf Lämmel (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter

Mehr

Interpreter für Zwischencode und abstrakte Interpretation

Interpreter für Zwischencode und abstrakte Interpretation Interpreter für Zwischencode und abstrakte Interpretation Drei-Address Code Übersicht Zwischencode: Drei-Adress, Bytecode,... Zielprogram: RISC, CISC, Stackbasiert Codegenerator: Befehlsauswahl Registervergabe

Mehr

Informatik II - Übung 04. Christian Beckel Besprechung Übungsblatt 3

Informatik II - Übung 04. Christian Beckel Besprechung Übungsblatt 3 Informatik II - Übung 04 Christian Beckel beckel@inf.ethz.ch 20.03.2014 Besprechung Übungsblatt 3 Christian Beckel 20/03/14 2 U3.A1! Unterschied zwischen! String! StringBuffer! Aufgabenstellung: "KEIN

Mehr

Kapitel 1. Bytecode, JVM, Dynamische Compilierung. Am Beispiel des IBM Jalapeno-Compilers (besser als SUN!) 1

Kapitel 1. Bytecode, JVM, Dynamische Compilierung. Am Beispiel des IBM Jalapeno-Compilers (besser als SUN!) 1 Kapitel 1 Bytecode, JVM, Dynamische Compilierung Am Beispiel des IBM Jalapeno-Compilers (besser als SUN!) 1 1 Abbildungen aus: IBM Systems Journal, Vol 39 Nr 1 1 1.1. LAUFZEITORGANISATION 1. Bytecode,

Mehr

Übung zur Vorlesung Einführung in Software Engineering

Übung zur Vorlesung Einführung in Software Engineering Übung zur Vorlesung Einführung in Software Engineering Wintersemester 2012/13, Richard Bubel und Martin Hentschel Übungsblatt 5: Testen Abgabeformat: Reichen Sie Ihre Lösung per SVN als eine PDF-Datei

Mehr

Objektorientierte. Programmierung und Modellierung. Einführung. Ralf Lämmel.

Objektorientierte. Programmierung und Modellierung. Einführung. Ralf Lämmel. Objektorientierte Einführung Ralf Lämmel Programmierung und Modellierung http://twitter.com/oopm Do you really need to print these slides? Please help saving trees! Mechanik dieser Lehrveranstaltung 4

Mehr

Virtual Machines unter der Haube

Virtual Machines unter der Haube Virtual Machines unter der Haube Alexander Lais unfug.org 21.06.2007 Agenda Aufbau der Laufzeitumgebungen Binärformate und Befehlssatz Compilierung Garbage Collection Nativer Code

Mehr

Exception Handling in Java

Exception Handling in Java Seminarbericht zum Vortrag Exception Handling in Java im Rahmen der Lehrveranstaltung: Seminar aus Softwareentwicklung Wintersemester 2003/04 Autor: Wiener Norbert MatrNr.: 9956158 SKZ: 880 Inhaltsverzeichnis:

Mehr

JAVA als erste Programmiersprache Semesterkurs

JAVA als erste Programmiersprache Semesterkurs JAVA als erste Programmiersprache Semesterkurs 0 - Einstieg WS 2012 / 2013 Prof. Dr. Bodo Kraft Prof. Dr. Bodo Kraft FH Aachen University of Applied Sciences Fachbereich Medizintechnik und Technomathematik

Mehr

Von Geysiren und Kaffeebohnen

Von Geysiren und Kaffeebohnen Von Geysiren und Kaffeebohnen Eine kleine Tour durch die Android-Laufzeitumgebung Jörg Pleumann Noser Engineering AG Android Experience Day 2008 Agenda Überblick Virtuelle Maschine Core Libraries Zusammenfassung

Mehr

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.

Mehr

Personalbuslinie CCS Fahrtrichtung Geb Haltestelle Terminal 1 Ost Abfahrtzeiten

Personalbuslinie CCS Fahrtrichtung Geb Haltestelle Terminal 1 Ost Abfahrtzeiten 00:02 00:04 3 00:08 00:09 00:10 2 00:11 00:11 00:12 Geb. 587 00:13 Geb. 556 00:14 Geb. 555 00:15 1 - intern 00:17 Geb. 520 00:19 Geb. 527 00:20 Geb. 532 00:21 Geb. 534 00:22 Geb. 536 00:23 Geb. 543 00:24

Mehr

Die Erzeugung von Testfällen mit einer symbolischen virtuellen Maschine und Constraint Solvern

Die Erzeugung von Testfällen mit einer symbolischen virtuellen Maschine und Constraint Solvern Die Erzeugung von Testfällen mit einer symbolischen virtuellen Maschine und Constraint Solvern Christoph Lembeck Roger Müller chle4@wi.uni-muenster.de romu@wi.uni-muenster.de Herbert Kuchen kuchen@uni-muenster.de

Mehr

Zwischencode-Erzeugung. 2. Juni 2009

Zwischencode-Erzeugung. 2. Juni 2009 Zwischencode-Erzeugung im Rahmen des Seminars "Übersetzung von künstlichen Sprachen" Sebastian Hanneken 2. Juni 2009 1 / 32 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung

Mehr

Java Thread Synchronisierung

Java Thread Synchronisierung Java Thread Synchronisierung wait notify und Semaphor Synchronisierung Prof. Dr. Nikolaus Wulff Das Philosophen Problem Das essende Philosophen Problem wurden 1968 von Dijkstra formuliert und illustriert

Mehr

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse Innere Klassen in Java Java 1.0: nur top-level Klassen Seit Java Version 1.1: Innere Klassen Deklaration einer Klasse innerhalb einer anderen Klasse Illustration Eigenschaften Vorteile Anwendungsmöglichkeiten

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Java und Dalvik Bytecode - Ein Vergleich

Java und Dalvik Bytecode - Ein Vergleich Java und Dalvik Bytecode - Ein Vergleich WPF Compiler und Interpreter WS 2014/2015 Studiengang Medieninformatik Autoren Bryan Riddle, Matrikelnummer 11100449 bryan.riddle@smail.fh koeln.de Sydney Manalo

Mehr

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Definition Historie Motivation Die Programmiersprache Scala Einfache funktionale Programme Auswertung von Ausdrücken match.. case Prof. Dr. E. Ehses, Paradigmen der Programmierung.

Mehr

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel C# im Rahmen des Seminars - Programmiersprachen Markus Nestvogel 2 Gliederung 1. Einführung 2. Microsoft.NET 3. C# 3 1 Einführung objektorientierte Programmiersprache für Microsoft.NET entwickelt Konkurrenz

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Java Bytecode. Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19. Register und Stack. Klassenhierarchie und Typen

Java Bytecode. Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19. Register und Stack. Klassenhierarchie und Typen Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19 Prof. Barbara König Zwischensprache zwischen Hochsprache (Java) und Maschinensprache Vorteil: Maschinenunabhängigkeit, Geschwindigkeitsvorteil

Mehr

Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19

Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19 Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19 Prof. Barbara König Barbara König Modellierung, Analyse, Verifikation 1 Zwischensprache zwischen Hochsprache (Java) und Maschinensprache

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

Mehr

Vergleich unterschiedlicher virtueller Maschinen

Vergleich unterschiedlicher virtueller Maschinen Vergleich unterschiedlicher virtueller Maschinen Seminar: Compiler-Konstruktion Fachbereich Programmiersprachen und Übersetzer Philipp Bähre Gliederung: Einführung Operandenstack und virtuelle Register

Mehr

Vorgartenstraße. Praterstern 5,5B,80A,82A,O,U2. Donauinsel 11A,11B. Montag-Freitag (Schule) Montag-Freitag (Ferien) Samstag Sonn- und Feiertage

Vorgartenstraße. Praterstern 5,5B,80A,82A,O,U2. Donauinsel 11A,11B. Montag-Freitag (Schule) Montag-Freitag (Ferien) Samstag Sonn- und Feiertage U A A,8,69A,O,A,A,59A,6,U,U,WLB A,A,A,U,,A,U 5,5B,8A,8A,O,U A,B B,9A,9B B A,5,6A,7A,9A,9A A,A,6,A,7A 8A,9A 9A,A 6 8 9 5 5 7 7 7 5 57 6 - - Intervall - 5 - - - - - - - - - - 5 57 5 7 5 5 57 5 7 5 5 57 5

Mehr

25 Floridsdorf U Oberdorfstraße

25 Floridsdorf U Oberdorfstraße 25 U U 22A,,27A,,9A,U1 9A,86A,87A,95A,96A 86A,87A,95A Donauspital U 95A,U2,97A,98A 0 07 09 11 13 15 16 18 19 58 5 08 18 28 38 6 53 6 01 08 16 23 31 38 - - - - 8 - - - - - - - - - 56 9 08 16 23 25 31 38

Mehr

Programmieren 1 09 Vererbung und Polymorphie

Programmieren 1 09 Vererbung und Polymorphie Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

Chapter 1 : þÿ b w i n O n l i n e - W e t t e n c h a p t e r

Chapter 1 : þÿ b w i n O n l i n e - W e t t e n c h a p t e r Chapter 1 : þÿ b w i n O n l i n e - W e t t e n c h a p t e r þÿ w e t t e n, s p o r t w e t t e n, b w i n, w e t t a n b i e t e r, b u c h m a c h e r w a s i s t b w i n? s e t z e n. b w i n c a

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen Fortgeschr. Objektorientierung SS 2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Parameter-Übergabe-Mechanismen in Java und in anderen Sprachen. 1. Methoden vereinbaren mit Parametern Wenn man (z.b. in Java) eine Methode

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Java Generics. Ein kleines Tutorium zur Verwendung von Generics. Prof. Dr. Nikolaus Wulff

Java Generics. Ein kleines Tutorium zur Verwendung von Generics. Prof. Dr. Nikolaus Wulff Java Generics Ein kleines Tutorium zur Verwendung von Generics. Prof. Dr. Nikolaus Wulff Java Generics Seit 2004 stehen mit der Auslieferung von J2SE 5.0 (dem JDK 1.5) Generics zur Verfügung. Es lassen

Mehr

3AA. Prozeduren und Rekursion Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006

3AA. Prozeduren und Rekursion Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006 3AA Prozeduren und Rekursion 29.11.05 Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006 3AA Prozeduren Berechnete Sprungadresse Ausführung bestimmter Anweisungen durch Schleifen Stattdessen:

Mehr

Singer Singer Seriennummern - Produktionsdatum (c) 2019 Nähzentrum Braunschweig :00

Singer Singer Seriennummern - Produktionsdatum (c) 2019 Nähzentrum Braunschweig :00 Seriennummern - Produktionsdatum 611.000 to 913.999 1871 914.000 to 963.999 1872 964.000 to 1.349.999 1873 1.350.000 to 1.914.999 1874 1.915.000 to 2.034.999 1875 2.350.000 to 2.154.999 1876 2.155.000

Mehr

1. Welche Programmzeilen definieren die main-methode richtig?

1. Welche Programmzeilen definieren die main-methode richtig? Prof. Dr. Detlef Krömker Ashraf Abu Baker Robert-Mayer-Str. 10 60054 Frankfurt am Main Tel.: +49 (0)69798-24600 Fax: +49 (0)69798-24603 EMail: baker@gdv.cs.uni-frankfurt.de 1. Welche Programmzeilen definieren

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 14.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung 14.1.08 1 / 11 Übersicht 1

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do

Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do 1. (6 P) Schreiben Sie die folgenden mathematischen Ausdrücke als korrekte C++- Anweisungen (Variablendeklarationen,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen

Mehr

Chapter 1 : þÿ b w i n a p p i n s t a l l i e r e n c h a p t e r

Chapter 1 : þÿ b w i n a p p i n s t a l l i e r e n c h a p t e r Chapter 1 : þÿ b w i n a p p i n s t a l l i e r e n c h a p t e r þÿ b u k m a c h e r z y, i n f o r m a c j e : e x p e k t, b e t c l i c, b w i n, b e t - a t - h o m e, b e t 3 6 5, u n i b e t,.

Mehr

Übersetzer I. Vorlesung WS 1999/2000 Uwe Kastens

Übersetzer I. Vorlesung WS 1999/2000 Uwe Kastens U-0 Übersetzer I Vorlesung WS 1999/2000 Uwe Kastens grundlegende Verfahren der Sprachimplementierung erlernen, den Einsatz von generierenden Werkzeugen und von Standardverfahren kennen und schätzen lernen,

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

U1 Reumannplatz Leopoldau

U1 Reumannplatz Leopoldau U A A,8,69A,O,A,A,59A,6,U,U,WLB A,A,A,U,,A,U 5,5B,8A,8A,O,U A,B B,9A,9B B A,5,6A,7A,9A,9A er Platz A,A,6,A,7A 8A,9A 9A,A 6 8 9 5 5 7 7 7 5 57 6 - - - Intervall - 5 - - - - - - - - - - - - - 5 57 5 7 5

Mehr

Vererbung Advanced. Ziele. Überschreiben von Methoden der Eltern Einführung Interface & Abstrakte Klasse Sichtbarkeit von Methoden bei Vererbung

Vererbung Advanced. Ziele. Überschreiben von Methoden der Eltern Einführung Interface & Abstrakte Klasse Sichtbarkeit von Methoden bei Vererbung Vererbung Advanced Ziele Überschreiben von Methoden der Eltern Einführung Interface & Abstrakte Klasse Sichtbarkeit von Methoden bei Vererbung Vererbung (Wiederholung) public class Mutter { public int

Mehr

Exceptions - Klausuraufgaben

Exceptions - Klausuraufgaben Exceptions - Klausuraufgaben (1.) Exception ist.! (a.) eine Klasse (b.) eine Schnittstelle (c.) abstrakte Klasse (d.) Keines davon (2.) Exception is in dem Java Package! (a.) java.lang (b.) java.util (c.)

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Info2 Übungsstunde 5. Agenda. Lösungen U4. Java... more insights. Tipps zur Übung 5

Info2 Übungsstunde 5. Agenda. Lösungen U4. Java... more insights. Tipps zur Übung 5 Ifo2 Übugsstude 5 Ageda Lösuge U4 Java... more isights Tipps zur Übug 5 1 L4.A1 Stack Neeswertes Zwei Members: buffer ud size capacity := buffer.legth empty := size == 0 elemet idex := size void push(it

Mehr

Kapitel 12: Übersetzung objektorienter Konzepte

Kapitel 12: Übersetzung objektorienter Konzepte Kapitel 12: Übersetzung objektorienter Konzepte Themen Klassendarstellung und Methodenaufruf Typüberprüfung Klassenhierarchieanalyse Escape Analyse 12.1 Klassendarstellung bei Einfachvererbung class Punkt

Mehr

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus F 5. Übung F 5. Übung F.1 Überblick Aufgabe 3 RPC-System im Überblick Marshalling primitiver Datentypen Byteorder Fließkommawerte s und s F.1 Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern

Mehr

Irren ist menschlich. Nur wer uns lobt, ist unfehlbar. (Oliver Hassencamp)

Irren ist menschlich. Nur wer uns lobt, ist unfehlbar. (Oliver Hassencamp) 27 Errata Irren ist menschlich. Nur wer uns lobt, ist unfehlbar. (Oliver Hassencamp) 27.1 Einleitung Auf den folgenden Seiten finden Sie alle mir derzeit (Stand: 19.04.2004) bekannten Fehler in meinem

Mehr

Beispielprüfung CuP WS 2015/2016

Beispielprüfung CuP WS 2015/2016 Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen

Mehr

Tutorium 5 - Programmieren

Tutorium 5 - Programmieren Tutorium 5 - Programmieren Grischa Liebel Uni Karlsruhe (TH) Tutorium 11 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008

Mehr

Informatik II Übung 04

Informatik II Übung 04 Informatik II Übung 04 Michael Baumann mbauman@student.ethz.ch n.ethz.ch/~mbauman 23.03.2016 Ablauf 1) Nachbesprechung Serie 3 2) Stacks 3) Vorbesprechung Serie 4 4) Bytecode und Assembler 2 Ablauf 1)

Mehr

Die Halde. Verwendung in der Speicherbelegung Visualisierung der Halde Call by Value & Call by Reference

Die Halde. Verwendung in der Speicherbelegung Visualisierung der Halde Call by Value & Call by Reference Die Halde Verwendung in der Speicherbelegung Visualisierung der Halde Call by Value & Call by Reference Die Halde Grafische Darstellung des Speichers enthält Name des Datentypes alle Membervariablen mit

Mehr

Softwaretechnik 1 Übung 2

Softwaretechnik 1 Übung 2 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 2 25.5.2009 Aufgabe 1 Klassendiagram // do X firexoccurred(); XListener + xoccurred(e:xevent) * listeners

Mehr

Wiederholung. Klassenhierarchie:

Wiederholung. Klassenhierarchie: Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse

Mehr

Effiziente Java Programmierung

Effiziente Java Programmierung Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen

Mehr

C++ Parent-Shared-Ptr. Detlef Wilkening

C++ Parent-Shared-Ptr. Detlef Wilkening http://www.wilkening-online.de Seite 1 / 19 C++ Parent-Shared-Ptr Detlef Wilkening 14.01.2016 http://www.wilkening-online.de Seite 2 / 19 Shared-Ptr Kennt jeder Nutzt jeder Und das ist gut so Aber es gibt

Mehr

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik Programmieren I Dokumentation mit javadoc Heusch 10.4 Ratz 4.1.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Automatische Dokumentation Java bietet standardmäßig das Dokumentationssystem

Mehr

E i n f ü h r u n g i n d i e D a t e n b a n k s p r a c h e SQL

E i n f ü h r u n g i n d i e D a t e n b a n k s p r a c h e SQL E i n f ü h r u n g i n d i e D a t e n b a n k s p r a c h e SQL E i n e S c h u l u n g s u n t e r l a g e v o n V o l k e r K ö n i g S t a n d : 2 2. 0 4. 0 4 1 9 9 4-2 0 0 4 b y V o l k e r K ö n

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Mapra: C++ Teil 6. Felix Gruber, Michael Rom. 07. Juni 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 6 07.

Mapra: C++ Teil 6. Felix Gruber, Michael Rom. 07. Juni 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 6 07. Mapra: C++ Teil 6 Felix Gruber, Michael Rom IGPM 07. Juni 2016 Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 6 07. Juni 2016 1 / 14 Themen vom letzten Mal Klassen Vererbung Zeiger auf Objekte Initialisierungsliste

Mehr

Informatik II Übung, Woche 14

Informatik II Übung, Woche 14 Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen

Mehr

Freudenauer Hafenstraße. Grünhaufenbrücke. Holen Sie sich die aktuellen Abfahrtszeiten auf Ihr Handy! <weißer Text> m.qando.

Freudenauer Hafenstraße. Grünhaufenbrücke. Holen Sie sich die aktuellen Abfahrtszeiten auf Ihr Handy! <weißer Text> m.qando. 79A,71A,73A 7A 7A U Marathonweg 0 0 Montag-Freitag (Schule) Montag-Freitag (Ferien) Samstag 33 33 48 7 33 48 8 18 48 9 18 10 18 11 18 12 33 13 33 14 33 1 48 1 18 48 17 18 33 18 18 19 18 20 18 18 33 33

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Objektorientierte. Programmierung und Modellierung. Einführung. Ralf Lämmel AG Softwaresprachen

Objektorientierte. Programmierung und Modellierung. Einführung. Ralf Lämmel AG Softwaresprachen Objektorientierte Einführung Ralf Lämmel AG Softwaresprachen Programmierung und Modellierung Mechanik dieser Lehrveranstaltung 3 Was ist OOPM? Einführungsveranstaltung Informatik Besucher aus den Curricula

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr