Java bytecode
Arnaud Fontaine, Samuel Hym, Isabelle Simplot-ryl et al. · 2011
Cited by 0
Read the abstract, see who wrote it and who cites it, and get the citation in APA, MLA, Chicago or Harvard.
About 1,349 papers for “Java bytecode”
Arnaud Fontaine, Samuel Hym, Isabelle Simplot-ryl et al. · 2011
Cited by 0
Gerwin Klein · it - Information Technology · 2005
Zusammenfassung Der Bytecode Verifier ist ein essenzieller Bestandteil der Sicherheitsarchitektur der Programmierplattform Java. Die vorliegende Dissertation stellt eine formale, ausführbare Spezifikation des Bytecode Verifiers vor sowie den Beweis, dass diese korrekt ist. Die Formalisierung, vollständig im Theorembeweiser Isabelle durchgeführt, besteht aus einem abstrakten Framework für Bytecode-Verifikation, das mit zunehmend ausdrucksstarken Typsystemen instanziiert wird. Diese decken sämtliche wichtigen Eigenschaften der Java-Plattform ab. Die Formalisierung liefert zwei ausführbare, verifizierte Bytecode Verifier: den Standard-Algorithmus, wie er auf normalen Desktop-Rechnern benutzt wird, und einen Lightweight Bytecode Verifier für eingebettete Systeme mit Ressourcenbeschränkungen wie z.B. Java SmartCards.
Cited by 2
James Hamilton · 2011
Cited by 0
Christopher League, Valery Trifonov, Zhong Shao · 2001
We describe the design and implementation of lambdaJVM, a functional representation of Java bytecode that makes data flow explicit, verification simple, and that is well-suited for translation into lower-level representations such as those used in optimizing compilers. It is a good alternative to stack-based Java bytecode for virtual machines or ahead-of-time compilers which optimize methods and produce native code. We use lambdaJVM as one component in a sophisticated type-preserving compiler for Java class files. Though our implementation is incomplete, preliminary measurements of both compile and run times are promising.
Cited by 0
Tobias Nipkow · Journal of Automated Reasoning · 2003
Cited by 14
Macháček, Ondřej · Brno University of Technology Digital Library (Brno University of Technology) · 2013
Tato práce se zabývá popisem struktury mezikódu jazyka Java a disassemblováním instrukcí mezikódu jazyka Java. Součástí této práce je knihovna pro disassemblování souborů tříd jazyka Java. Knihovna umožňuje zobrazit veškeré disassemblované informace uložené v souboru tříd. Pro ukázku práce s knihovnou byla napsána i jednoduchá aplikace s grafickým uživatelským rozhraním.
Cited by 0
H.D. Lambridge · 2002
We present our results obtained from applying well known optimizations to Java bytecodes. We survey the optimizations implemented thus far, which include peephole optimizations, jump redundancy eliminations, and common subexpression elimination. The transformations are each analyzed according to several criteria. We measure the impact each has on reducing a program's execution time and size, the frequency by which the optimizations can be applied, and the extra compile time incurred. Together, these results quantify the overall effectiveness of employing classical optimizations on bytecodes. Our experiments were conducted on a representative set of public domain Java programs which were compiled using Sun's JDK 1.0.2. All transformations were applied to bytecodes with no access to their original source.
Cited by 0
Hřibal, Jaromír · Brno University of Technology Digital Library (Brno University of Technology) · 2015
První část této bakalářské práce se zabývá základními principy virtuálního stroje jazyka Java a detailněji se věnuje jeho instrukční sadě a formátu . class souborů, dohromady známých jako bajtkód . Následující část prezentuje rešerši existujících nástrojů pro manipulaci s bajtkódem . Poslední část popisuje vytvoření pluginu do vývojového prostředí Eclipse , který realizuje uživatelsky přívětivé zobrazení zadaného bajtkódu spolu s původním zdrojovým kódem, ze kterého byl bajtkód generován. Nástroj předpokládá dostupnost těchto zdrojových kódů, takže neplní roli dekompilátoru.
Cited by 0
Roberto Barbuti, Stefano Cataudella · 2004
A Java program is usually translated into an intermediate language, known as Java Virtual Machine Language (JVML), which is then executed by a Java Virtual Machine (JVM). Before its execution a JVML program is verified to prevent a wide range of run-time errors. Nowadays, Java applets are available for various kinds of portable devices, including modern Java smart cards. However, Java cards cannot execute the classical verification algorithms, due to their very small amount of working memory.We present a new algorithm to verify a subset of the Java bytecode language, suitable to be executed in low-memory environments, such as Java smart cards. The method is based on abstract interpretation of the language operational semantics. We define an abstract small-step semantics of the language, able to keep information regarding the modifications of data during Java constructs execution. We state the equivalence between our verification algorithm and the "standard" one. Moreover, we discuss the low memory requirements of the algorithm.
Cited by 0
Krýsl, Miroslav · Digital Library (University of West Bohemia)
Tato bakalářská práce se zabývá návrhem a implementací vizuálního intrepreteru pro podmnožinu bajtkódu Javy. V prvních částech je popsána specifikace virtuálního stroje Javy - JVM a také existující emulátory nejen pro Javu. V dalších částech práce je návrh vizuálního interpreteru, stručný popis jeho implementace a výsledky uživatelského testování.
Cited by 0Open access
Technische Universität München, Technische Universität München, Gerwin Klein et al. · 2003
Kurzfassung Der Bytecode Verifier ist ein essentieller Bestandteil der Sicherheitsarchiktektur der Programmierplattform Java. Die Dissertation präsentiert eine formale, ausführbare Spezifikation des Bytecode Verifiers sowie den Beweis, dass dieser korrekt ist. Die Formalisierung im Theorembeweiser Isabelle besteht aus einem abstrakten Framework für Bytecode-Verifikation, das mit zunehmend ausdrucksstarken Typsystemen instantiiert wird. Diese decken sämtliche interessanten Eigenschaften der Java-Plattform ab: Klassen,
Cited by 0
Poncová, Vendula · Brno University of Technology Digital Library (Brno University of Technology) · 2016
Tato práce se zabývá optimalizací bajtkódu jazyka Java zhlediska jeho velikosti. Popisuje virtuální stroj Javy a formát jeho instrukčního souboru a uvádí přehled některých knihoven pro manipulaci sbajtkódem. Spomocí těchto knihoven byla provedena analýza vybraného vzorku dat a nalezeny sekvence instrukcí, které by bylo možné optimalizovat. Na základě výsledků analýzy byly navrhnuty a implementovány metody pro optimalizaci velikosti bajtkódu. Velikost bajtkódu zkoumaného vzorku dat se po aplikaci metod snížila o zhruba 25%.
Cited by 0
Delphine Demange, Thomas Jensen, David Pichardie et al. · 2010
Cited by 0
Batchelder, Michael Robert · 2007
Programs written for machine execution will always be susceptible to information theft. This information can include trademarked algorithms, data embedded in the program, or even data the program accesses. As technology advances computer scientists are building more and more powerful tools for reverse-engineering such as decompilers.The Java programming language is particularly open to reverse-engineering attacks because of its well-defined, open, and portable binary format. We examine one area of better-securing the intellectual property of a Java program; obfuscation. Obfuscation of a program involves transforming the code of the program into a more complex, but semantically equivalent representation. This can include the addition of confusing control flow, the removal of certain information embedded in the program which is not explicitly required for execution, or the cloaking of data.Obfuscation is one of the only techniques available other than cryptological options. While many approaches to obfuscation are ultimately reversible, it nevertheless seriously hinders those attempting to steal information by increasing the computing time and power required by software to reverse-engineer the program and also severely increases the complexity of any source code that is recovered by the reverse-engineering.In this thesis we present a number of obfuscating transformations implemented within a new automatic tool we name the Java Bytecode Obfuscator (JBCO). We present empirical measures of the performance costs of these transformations in terms of execution speed and program size. Complexity measurements that gauge the effectiveness of the obfuscations are also given. Finally, we review the feasibility of each transformation by looking at source code generated from obfuscated bytecode by various decompilers.
Cited by 1
Haiping Xu · 2007
State Machine) 6 rules [6] into a SMV program, is missing. In this report, we try to use another method, which was based on labeled state transition graphs. By using the model checker introduced in paper [12], we may verify CTL formulas efficiently. 3.1 Formal Semantics of Java 3.1 Formal Semantics of Java Bytecode Instructions Bytecode Instructions The formal semantic of most Java bytecode instructions has been described in Qian's work [8]. Based on the formalism of Java byte code instructions, a Java bytecode program can be described as an ASM (Abstract State Machine). All variables in a bytecode program plus some additional variables, such as pc (program counter) become the state variables in the ASM, and each instruction is mapped to a state transition in ASM, which could be described as an ASM rule as follows: If pc == i then S I i ; where pc is the program counter, and R Ii is the instantiation of rule schemes for it's corresponding instruction I i . Thus a bytecode pr...
Cited by 0
Rahul K. Shah · 2005
Cited by 3
Andreas, Probst, Christian W., Franz, Michael · eScholarship (California Digital Library) · 2004
Java bytecode is commonly verified prior to execution. The standard verifier is designed as a black-box component that either accepts or rejects its input. Internally, it uses an iterative data-flow analysis to trace definitions of values to their uses to ensure type safety. The results of the data-flow analysis are discarded once that verification has completed. In many JVMs, this leads to a duplication of work, since definition-use chains will be computed all over again during just-in-time compilation. We introduce a novel bytecode verification algorithm that verifies bytecode via Static Single Assignemnt (SSA) form construction. The resulting SSA representation can immediately be used for optimization and code generation. Our prototype implementation takes less time to transform bytecode into SSA form and verify it than it takes Sun's verifier to merely confirm the validity of Java bytecode, with the added benefit that SSA is available "for free" to later compilation stages.
Cited by 0
Peter Bertelsen · 1998
instruction JVM instruction Jsconst ldc or ldc w Jaload aload !n?, aload, or wide aload Jastore astore !n?, astore, or wide astore Jdconst dconst !n? or ldc2 w Jdload dload !n?, dload, or wide dload Jdstore dstore !n?, dstore, or wide dstore Jfconst fconst !f?, ldc, or ldc w Jfload fload !n?, fload, or wide fload Jfstore fstore !n?, fstore, or wide fstore Jgoto goto or goto w Jiconst iconst !i?, bipush, sipush, ldc, or ldc w Jiinc iinc or wide iinc Jiload iload !n?, iload, or wide iload Jistore istore !n?, istore, or wide istore Jjsr jsr or jsr w Jlconst lconst !l? or ldc2 w Jlload lload !n?, lload, or wide lload Jlstore lstore !n?, lstore, or wide lstore Jnewarray newarray, anewarray, or multianewarray Jret ret or wide ret Jreturn areturn, dreturn, freturn, ireturn, lreturn, or return The bytecode emitter translates each of the above abstract bytecode instructions into the most compact of the corresponding JVM bytecode instructions. By introducing this level of abstraction over the instruction set of the JVM, the user of the SML-JVM toolkit is relieved from worrying about details in the JVM instruction set, e.g. which of the JVM instructions iconst !i?, bipush, sipush, and ldc should be used for pushing an integer constant onto the operand stack. The user just inserts an abstract Jiconst instruction with an Int32.int argument, and the bytecode emitter then chooses the most compact of the corresponding JVM instructions based on the value of the immediate integer argument. All other abstract bytecode instructions than those listed above are mapped directly to the corresponding JVM instructions. For example, the abstract instruction Jdup simply maps to the JVM instruction dup (represented in binary form as opcode 89). 3.4 Generating A Class File Generation of a physical...
Cited by 0
Vidit Ochani · K-State Research Exchange (Kansas State University) · 2014
Cited by 0
Richard L. Apodaca · Front Matter · 2006
In the ideal world for many Java developers, all software would be written in Java. The reality is that a great deal of software is written in other languages, one of the most widespread of which is C. This article discusses a unique approach to working with C code from Java, producing 100% pure Java bytecode that runs anywhere Java does.
Cited by 0Open access