Dissertations / Theses on the topic 'Java bytecode'
Create a spot-on reference in APA, MLA, Chicago, Harvard, and other styles
Consult the top 50 dissertations / theses for your research on the topic 'Java bytecode.'
Next to every source in the list of references, there is an 'Add to bibliography' button. Press on it, and we will generate automatically the bibliographic reference to the chosen work in the citation style you need: APA, MLA, Harvard, Chicago, Vancouver, etc.
You can also download the full text of the academic publication as pdf and read online its abstract whenever available in the metadata.
Browse dissertations / theses on a wide variety of disciplines and organise your bibliography correctly.
Batchelder, Michael Robert. "Java bytecode obfuscation." Thesis, McGill University, 2007. http://digitool.Library.McGill.CA:80/R/?func=dbin-jump-full&object_id=18300.
Full textLes programmes écrits pour l'exécution d'ordinateur seront toujours susceptibles au vol d'information. Cette information peut inclure des algorithmes de marque de commerce, des données incluses dans le programme, ou même des données concernant les accès de programme. Suivant les avancées technologiques, les informaticiens construisent des outils de plus en plus puissants pour l'ingénierie inverse telle que le décompilateur. Le langage de programmation de Java est particulièrement ouvert aux attaques de l'ingénierie inverse en raison de son format binaire bien défini, ouvert, et portatif. Nous recherches portent sur un domaine permettant de mieux sécuriser fixer la propriété intellectuelle des programmes en Java; obscurcissement. L'obscurcissement d'un programme implique de transformer le code du programme en une représentation plus complexe mais sémantiquement équivalente. Ceci peut inclure l'addition de l'écoulement embrouillant de commande, de la supression de certaines informations incluses dans les programmes dont l'exécution n'est pas spécifiquement exigée, ou de la dissimulation des données. Excepté les techniques cryptologique s, l'obscurcissement est l'une des seules techniques disponibles. Même si beaucoup de stratégies de l'obscurissment sont finalement réversibles, il gêne sérieusement ceux qui essayent de voler l'information en augmentant la durée de calcul et la puissance exigées par les logicels d'ingénierie inverse et augmente considérablement la complexité de n'importe quel code source récupere par cette technique. Dans cette thèse nous présentons un certain nombre de transformations d'obscurcissement mises en application dans un outil automatique que nous appelons le Java Bytecode Obfuscator (JBCO). Nous présentons des mesures empiriques des coûts d'exécution de ces transformations en termes de vitesse d'exécution et taille de programme. Des mesures de complexité qui mesurent l'efficacité des obscurc
Klein, Gerwin. "Verified Java bytecode verification." [S.l. : s.n.], 2003. http://deposit.ddb.de/cgi-bin/dokserv?idn=967128749.
Full textShah, Rahul Arvind. "Vulnerability assessment of Java bytecode." Auburn, Ala., 2005. http://repo.lib.auburn.edu/Send%2012-16-07/SHAH_RAHUL_44.pdf.
Full textOchani, Vidit. "Java bytecode to Pilar translator." Kansas State University, 2013. http://hdl.handle.net/2097/16987.
Full textDepartment of Computing and Information Sciences
Robby
Software technology is the pivot around which all modern industries revolve. It is not surprising that industries of diverse nature such as finance, business, engineering, medicine, defense, etc. have assimilated sophisticated software in every step of functioning. Subsequently, with larger reach of application, software technology has evolved intricately; thereby thwarting the desirable testing of software. Companies are investing millions of dollars in manual and automated testing, however, software bugs continue to persist. It is well known that even a trivial bug can ultimately cost the company millions of dollars. Therefore, we need smarter tools to help eliminate bugs. Sireum is a research project to develop a software analysis platform that incorporates various tools and techniques. Symbolic execution, model checking, deductive reasoning and control flow graph are few examples of the aforementioned techniques. The Sireum platform is based on previous projects like the Indus static analysis framework, the Bogor model checking framework and the Bandera Java model checker. It uses the Pilar language as intermediate representation. Any language which can be translated to Pilar can be analyzed by Sireum. There exists translator for Spark - a verifiable subset of Ada for building high-integrity systems. In this report, we are presenting one such translator for Java Bytecode - A frontend which can generate Pilar from Java intermediate representation. The translator emulates the working of the Java Virtual Machine(JVM), by simulating a stack-based virtual machine. It will help us analyse JVM based softwares, such as, mobile applications for Android. We also evaluate and report statistics on the efficiency and speed of translation.
Doyon, Stéphane. "On the security of Java, the Java bytecode verifier." Thesis, National Library of Canada = Bibliothèque nationale du Canada, 1999. http://www.collectionscanada.ca/obj/s4/f2/dsk1/tape7/PQDD_0004/MQ41890.pdf.
Full textVallee-Rai, Raja. "Soot : a java bytecode optimization framework." Thesis, McGill University, 2000. http://digitool.Library.McGill.CA:80/R/?func=dbin-jump-full&object_id=30836.
Full textWe present SOOT, a framework for optimizing Java bytecode. The framework is implemented in Java and supports three intermediate representations for representing Java bytecode: BAF, a streamlined representation of bytecode which is simple to manipulate; JIMPLE, a typed 3-address intermediate representation suitable for optimization; and GRIMP an aggregated version of JIMPLE suitable for decompilation. SOOT also contains a set of transformations between these intermediate representations, and an application programming interface (API) is provided to write optimizations and analyses on Java bytecode in these forms.
In order to demonstrate the usefulness of the framework, we have implemented intraprocedural and whole program optimizations. To show that whole program bytecode optimization can give performance improvements, we provide experimental results for 10 large benchmarks, including 8 SPECjvm98 benchmarks running on JDK 1.2. These results show a speedup of up to 38%.
Pinto, Camara Tarcisio. "Otimização bytecode Java na plataforma J2ME." Universidade Federal de Pernambuco, 2004. https://repositorio.ufpe.br/handle/123456789/2567.
Full textConselho Nacional de Desenvolvimento Científico e Tecnológico
Aplicações para os dispositivos móveis, como telefones celulares e pagers, implementadas em J2ME (Java 2 Micro Edition) são desenvolvidas sob severas restrições de tamanho e desempenho do código. A indústria tem adotado ferramentas de otimização, como obfuscators e shrinkers, que aplicam otimizações de programa inteiro (Whole Program Optimizations) considerando que o código gerado não será estendido ou usado por outras aplicações. Infelizmente, os desenvolvedores freqüentemente não conhecem suficientemente nestas ferramentas e continuam sacrificando a qualidade do código na tentativa de otimizar suas aplicações. Este trabalho apresenta um estudo original identificando a efetividade das otimizações mais comuns nos obfuscators. Este estudo mostra também que a otimização de Method Inlining, conhecida pelos benefícios de desempenho, tem sido negligenciada por estas ferramentas por normalmente esperarse que ela tenha efeito negativo sobre o tamanho de código. Assim, este trabalho contribui com uma implementação de method inlining entre classes e fundada no princípio de otimização de programa inteiro, capaz de melhorar tanto o tamanho do código como o desempenho da aplicação, ao remover cerca de 50% dos métodos alcançáveis. Finalmente, na tentativa de ajudar os desenvolvedores a tirar o melhor proveito destas ferramentas, o estudo inclui também um guia de boas práticas de programação considerando as otimizações implementadas pelos obfuscators
Modesto, Francisco. "Development of a Java Bytecode Front-End." Thesis, Växjö University, School of Mathematics and Systems Engineering, 2009. http://urn.kb.se/resolve?urn=urn:nbn:se:vxu:diva-6210.
Full textThe VizzAnalyzer is a powerful software analysis tool. It is able to extract information from various software representations like source code but also other specifications like UML. The extracted information is input to static analysis of these software projects. One programming language the VizzAnalyzer can extract information from is Java source code.
Analyzing the source code is sufficient for most of the analysis. But, sometimes it is necessary to analyze compiled classes either because the program is only available in byte-code, or the scope of analysis includes libraries that exist usually in binary form. Thus, being able to extract information from Java byte-code is paramount for the extension of some analyses, e.g., studying the dependecy structure of a project and the libraries it uses.
Currently, the VizzAnalyzer does not feature information extraction from Java byte-code. To allow, e.g., the analysis of the project dependency structure, we extend the VizzAnalyzer tool with a bytecode front-end that will allow the extraction of information from Java bytecode.
This thesis describes the design and implementation of the bytecode front-end. After we implemented and integrated the new front-end with the VizzAnalyzer, we are now able to perform new analyses that work on data extracted from both, source- and bytecode.
Zabel, Martin. "Effiziente Mehrkernarchitektur für eingebettete Java-Bytecode-Prozessoren." Doctoral thesis, Saechsische Landesbibliothek- Staats- und Universitaetsbibliothek Dresden, 2012. http://nbn-resolving.de/urn:nbn:de:bsz:14-qucosa-84156.
Full textZabel, Martin, and Rainer G. Spallek. "SHAP — Scalable Multi-Core Java Bytecode Processor." Saechsische Landesbibliothek- Staats- und Universitaetsbibliothek Dresden, 2012. http://nbn-resolving.de/urn:nbn:de:bsz:14-qucosa-97619.
Full textQuigley, Claire Louise. "A programming logic for Java bytecode programs." Thesis, University of Glasgow, 2004. http://theses.gla.ac.uk/3030/.
Full textZabel, Martin, and Rainer G. Spallek. "SHAP — Scalable Multi-Core Java Bytecode Processor." Technische Universität Dresden, 2009. https://tud.qucosa.de/id/qucosa%3A26171.
Full textŽamberský, Zdeněk. "Zpětný překladač jazyka Java." Master's thesis, Vysoké učení technické v Brně. Fakulta strojního inženýrství, 2015. http://www.nusl.cz/ntk/nusl-232034.
Full textRasi, Stefano. "Manipolazione di Bytecode Java con la libreria ASM." Bachelor's thesis, Alma Mater Studiorum - Università di Bologna, 2020.
Find full textLagerkvist, Mikael Zayenz. "Machine Assisted Reasoning for Multi-Threaded Java Bytecode." Thesis, KTH, Electronic, Computer and Software Systems, ECS, 2005. http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-9512.
Full textIn this thesis an operational semantics for a subset of the Java Virtual Machine (JVM) is developed and presented. The subset contains standard operations such as control flow, computation, and memory management. In addition, the subset contains a treatment of parallel threads of execution.
The operational semantics are embedded into a $µ$-calculus based proof assistant, called the VeriCode Proof Tool (VCPT). VCPT has been developed at the Swedish Institute of Computer Science (SICS), and has powerful features for proving inductive assertions.
Some examples of proving properties of programs using the embedding are presented.
I det här examensarbetet presenteras en operationell semantik för en delmängd av Javas virtuella maskin. Den delmängd som hanteras innehåller kontrollflöde, beräkningar och minneshantering. Vidare beskrivs semantiken för parallella exekveringstrådar.
Den operationella semantiken formaliseras i en bevisassistent for $µ$-kalkyl, VeriCode Proof Tool (VCPT). VCPT har utvecklats vid Swedish Institiute of Computer Science (SICS), och har kraftfulla tekniker för att bevisa induktiva påståenden.
Några exempel på bevis av egenskaper hos program användandes formaliseringen presenteras också.
HILLERT, EMILIA. "Obfuscate Java bytecode: an evaluation ofobfuscating transformations using JBCO." Thesis, KTH, Skolan för datavetenskap och kommunikation (CSC), 2014. http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-153909.
Full textObfuskera Java bytekod: en utvärdering av obfuskeringstransformationer med JBCO. För att ett företag ska vara konkurrenskraftigt krävs det ofta att företaget skyddar sina produkter. Det kan vara förödande för ett företag om en konkurrent får tillgång till deras produkthemligheter och leda till företagets undergång.Detta gäller framförallt företag som utvecklar mjukvara. En lösning på detta problem är kodobfuskering. Detta examensarbete undersöker hur man skyddar Java källkod mot dekompilatorer.Tre stycken obfuskeringstransformationer implementerades och evaluerades i obfuskeraren JBCO. Slutsatsenär att kodobfuskering i många fall leder till att ett program blir svårare att tyda för en människa. Detta gör obfuskering till ett bra komplement för att försvåra processen att dekompilera ett program.
Mbhambhu, Tsakani Joseph. "A Java bytecode compiler for the 8051 micro-controller." Thesis, Stellenbosch : Stellenbosch University, 2002. http://hdl.handle.net/10019.1/52645.
Full textENGLISH ABSTRACT: This report describes the development of a Java Bytecode Compiler (JBC) for the 8051 micro-controller. Bytecodes are found in the class file generated when a Java source file is compiled with the java compiler (javac). On Java platforms, the Java Virtual Machine (JVM) interprets and executes the bytecodes. Currently existing Java platforms do not support programming the 8051 using Java. As an 8-bit micro-controller with only 64 KB of total memory, the 8051's word size and memory is too limited to implement a NM. Moreover, full applications of the 8051 require that it handles hardware interrupts and access 110 ports and special registers. This thesis proposes a JBC to compile the standard bytecodes found in the class file and generate equivalent assembly code that can run on the 8051. The JBC was tested on the 8051 compatible AT89C52*44 micro-controller with a program that simulates an irrigation controller. The code generated by the JBC executes correctly but is large in size and runs slower than code of a program written in assembly. Conclusions drawn are that the JBC can be used to compile Java programs intended for the 8051 and its family of micro-controllers. In particular, it is especially a good tool for people who prefer Java to other languages. The JBC is suitable for smaller programs that do not have efficiency as a major requirement.
AFRIKAANSE OPSOMMING: Hierdie tesis beskryf die ontwikkeling van 'n Java "Bytecode" samesteller (Java Bytecode Compiler, JBC) vir die 8051 mikro beheerder argitektuur. "Bytecodes" is die produk van die standaard Java samesteller "javac" en word deur 'n platform spesifieke Java Virtuele Masjien gelees en uitgevoer. Geen NM is huidig beskikbaar vir die 8051 argitektuur nie. Die gekose 8-bis 8051 mikro beheerder het 'n beperkte interne geheue van 64kB. Hierdie beperking maak dit nie geskik vir 'n IVM nie. Daar moet ook voorsiening gemaak word om hardeware onderbrekings te hantering en te kan kommunikeer met die poorte en spesiale registers van die mikro beheerder. JBC word ontwikkel wat die standaard "Bytecode" kompileer na geskikte masjien kode wat dan op die mikro beheerder gebruik kan word. Die JBC is ontwikkel en toets en 'n eenvoudige besproeiing program is geskryf om op 'n Atmel AT89C52*44 te loop. Die kode werk goed maar is nog nie geoptimeer nie en loop onnodig stadig. Optimerings metodes word aanbeveel en bespreek. Die gevolgtrekking is dat die huidige JBC kan gebruik word om Java kode te skryfvir die 8051 beheerder. Dit maak die hardeware platform nou beskikbaar aan Java programmeerders. Daar moet wel gelet word dat die JBC op die oomblik net geskik is vir klein programme en waar spoed nie die primêre vereiste is nie.
de, Carvalho Gomes Pedro. "Sound Modular Extraction of Control Flow Graphs from Java Bytecode." Licentiate thesis, KTH, Teoretisk datalogi, TCS, 2012. http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-105275.
Full textQC 20121122
Isber, Elias. "A compiler for all context-free grammars generating Java bytecode." Thesis, National Library of Canada = Bibliothèque nationale du Canada, 1997. http://www.collectionscanada.ca/obj/s4/f2/dsk2/ftp04/mq25612.pdf.
Full textArte, Ashish Sturgill David Brian. "Java bytecode compilation for high-performance, platform-independent logical inference." Waco, Tex. : Baylor University, 2005. http://hdl.handle.net/2104/2887.
Full textGagnon, Etienne. "A portable research framework for the execution of Java bytecode /." Thesis, McGill University, 2002. http://digitool.Library.McGill.CA:80/R/?func=dbin-jump-full&object_id=82876.
Full textIn this thesis we introduce innovative techniques for implementing an efficient, yet portable Java bytecode interpreter. These techniques address three areas: instruction dispatch, memory management, and synchronization. Specifically, we show how to implement an inline-threaded engine in the presence of lazy code preparation, without incurring a high synchronization penalty. We then introduce a logical partitioning of runtime system memory that simplifies memory management, and a related sparse interface virtual table design for fast interface-method invocation. We show how to efficiently compute space-efficient garbage collection maps for verifiable bytecode. We also present a bidirectional object layout that simplifies garbage collection. Finally, we introduce an improvement to thin locks, eliminating busy-wait in case of contention. Our experiments within the Sable VM framework show that inline-threading [PR98] Java delivers significant performance improvement over switch and direct-threading, that sparse interface tables cause no memory loss, and that our map computation algorithm delivers a very small number of distinct garbage collection maps. Our overall performance measurements show that, using our techniques, a portable interpreter can deliver competitive interpretation performance, and even surpass that of a less-portable state-of-the-art interpreter on some benchmarks.
de, Carvalho Gomes Pedro, and Attilio Picoco. "Sound Extraction of Control-Flow Graphs from open Java Bytecode Systems." KTH, Teoretisk datalogi, TCS, 2012. http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-104076.
Full textQC 20121029
Verification of Control-Flow Properties of Programs with Procedures(CVPP)
Urquhart, Luke Dominic Mark. "Worst-case resource-usage analysis of Java Card classic editions application bytecode." Thesis, Imperial College London, 2016. http://hdl.handle.net/10044/1/42538.
Full textVittoria, Claude. "Études et principes de conception d'une machine langage Java : le processeur bytecode." Rennes 1, 2008. ftp://ftp.irisa.fr/techreports/theses/2008/vittoria.pdf.
Full textNowadays the democratization of the Internet facilitates the downloading of applications. However, the risk of corruption of these applications with malicious intents could affect the integrity of the system that executes them and data security. The Java language provides properties such as checking the integrity of the code, and safety enforcement applications to prevent these risks. We tried to use the Java language to build a minimum platform dedicated to enforce the bytecode processor. We isolated the missing elements in a JVM to write an operating system, such as the inability to handle natively material resources, as well as the features already provided and required by an operating system, and therefore dependent on a specific implementation, such as managing workflows
Charreteur, Florence. "Modélisation par contraintes de programmes en bytecode Java pour la génération automatique de tests." Phd thesis, Université Européenne de Bretagne, 2010. http://tel.archives-ouvertes.fr/tel-00497785.
Full textCharreteur, Schadle Florence. "Modélisation par contraintes de programmes en bytecode java pour la génération automatique de tests." Rennes 1, 2010. http://www.theses.fr/2010REN1S019.
Full textProgram verification is essential to maintain a certain level of quality and reliability. Testing is to date the most used software verification mean in industry. Constraint programming is seen as an effective way to automate test data generation. In this thesis we propose a constraint modeling of the Java bytecode semantics, and a method, based on this modeling, to automatically generate test data. Ourconstraint model of the semantics of a Java bytecode program allows to make effective deductions, including the presence of complex data structures or inheritance. In particular, the use of type variables can take into account inheritance and polymorphic method calls. Our method of test data generation uses the constraint model to cover specific instructions. This method is in particular a good way to cover instructions that are not reached by other methods of test data generation. Finally this method is implemented in a prototype named JAUT (Java Automatic Unit Testing). The experiments show that the prototype can increase the statements coverage obtained with the other available tools
Hubert, Laurent. "Foundations and implementation of a tool bench for static analysis of Java bytecode programs." Rennes 1, 2010. http://www.theses.fr/2010REN1S122.
Full textDans cette thèse, nous nous intéressons à l’analyse statique du bytecode Java. L’initialisation d’un système d’information est une phase délicate où des propriétés de sécurité sont vérifiées et des invariants installés. L’initialisation en Java pose des difficultés, que ce soit pour les champs, les objets ou les classes. De ces difficultés peuvent résulter des failles de sécurité, des erreurs d’exécution (bugs), ou une plus grande difficulté à valider statiquement ces logiciels. Cette thèse propose des analyses statiques répondant aux problèmes d’initialisation de champs, d’objets et de classes. Ainsi, nous décrivons une analyse de pointeurs nuls qui suit finement l’initialisation des champs et permet de prouver l’absence d’exception de pointeur nuls (NullPointerException) et de raffiner le graphe de flot de contrôle intra-procédural. Nous proposons aussi une analyse pour raffiner le graphe de flot de contrôle inter-procédural liée à l’initialisation de classe et permettant de modéliser plus finement le contenu des champs statiques. Enfin, nous proposons un système de type permettant de garantir que les objets manipulés sont complètement initialisés, et offrant ainsi une solution formelle et automatique à un problème de sécurité connu. Les fondations sémantiques de ces analyses sont données. Les analyses sont décrites formellement et prouvées correctes. Pour pouvoir adapter ces analyses, formalisées sur de petits langages, au bytecode, nous avons développé une bibliothèque logicielle. Elle nous a permis de produire des prototypes efficaces gérant l’intégralité du bytecode Java
Žárský, Jan. "Instrumentace Java programů, kontrakty pro paralelismus." Master's thesis, Vysoké učení technické v Brně. Fakulta informačních technologií, 2021. http://www.nusl.cz/ntk/nusl-445489.
Full textZabel, Martin [Verfasser], Rainer G. [Akademischer Betreuer] Spallek, and Djamshid [Akademischer Betreuer] Tavangarian. "Effiziente Mehrkernarchitektur für eingebettete Java-Bytecode-Prozessoren / Martin Zabel. Gutachter: Rainer G. Spallek ; Djamshid Tavangarian. Betreuer: Rainer G. Spallek." Dresden : Saechsische Landesbibliothek- Staats- und Universitaetsbibliothek Dresden, 2012. http://d-nb.info/1067731520/34.
Full textRose, Eva. "Vérification de code d'octet de la machine virtuelle Java : formalisation et implantation." Paris 7, 2002. http://www.theses.fr/2002PA077166.
Full textPoncová, Vendula. "Optimalizace velikosti bajtkódu Javy." Master's thesis, Vysoké učení technické v Brně. Fakulta informačních technologií, 2016. http://www.nusl.cz/ntk/nusl-255348.
Full textMrázek, Petr. "Generický zpětný překlad programů v bajtkódu do vyšší formy reprezentace." Master's thesis, Vysoké učení technické v Brně. Fakulta informačních technologií, 2013. http://www.nusl.cz/ntk/nusl-236178.
Full textSavary, Aymerick. "Détection de vulnérabilités appliquée à la vérification de code intermédiaire de Java Card." Thèse, Université de Sherbrooke, 2016. http://hdl.handle.net/11143/9584.
Full textGisel, Daniel. "Eiffel library to generate Java bytecodes." Zürich : ETH, Eidgenössische Technische Hochschule Zürich, Professur für Software Engineering /Chair of Software Engineering, 2003. http://e-collection.ethbib.ethz.ch/show?type=dipl&nr=196.
Full textMathewson, Nicholas A. (Nicholas Albert) 1977. "Verifying information flow control in Java bytecodes." Thesis, Massachusetts Institute of Technology, 2000. http://hdl.handle.net/1721.1/86523.
Full textIncludes bibliographical references (p. 49).
by Nicholas A. Mathewson.
M.Eng.
Lima, Willian dos Santos [UNESP]. "Compilação de bytecodes Java para um ambiente de arquitetura reconfigurável." Universidade Estadual Paulista (UNESP), 2009. http://hdl.handle.net/11449/98650.
Full textConselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq)
Durante esta pesquisa, foram investigados conceitos relacionados à computação reconfigurável, processo de compilação e funcionamento da compilação Java, especialmente no que se refere à manipulação de bytecodes. O principal objetivo é a elaboração conceitual de um compilador capaz de traduzir bytecodes de um aplicativo Java para código binário obediente ao conjunto de instruções do processador Nios II da Altera®, acompanhada de algumas implementações. Com este compilador, será possível a construção de programas para dispositivos que utilizem o processador Nios II, como dispositivos de sistemas embarcados, a partir da linguagem Java. Isto proporciona uma forma ágil para a elaboração de aplicativos para sistemas desse tipo. Implementações relevantes foram desempenhadas de forma a comprovar o funcionamento do referido compilador. Tais implementações abrangeram suporte de bytecodes referentes a um subconjunto da linguagem Java, bem como a criação de estruturas de representação intermediária e mecanismos para geração de código final. Além disso, foram desenvolvidos um simulador e um montador de instruções do Nios II de forma a auxiliar no andamento do trabalho. Como resultado, pôde-se verificar que é possível o desenvolvimento de tal ferramenta e que sua existência contribui para o desenvolvimento de outras ferramentas ou aplicativos inseridos no contexto de computação reconfigurável.
During this research, concepts concerning about reconfigurable computing, compiling process and Java compilation were investigated, especially relating to bytecode generation. The goal of this research is twofold: first, the conceptual development of a compiler that is able to translate bytecodes from a Java application to binary code compliant with Altera™ Nios II processor instruction set, and second, provide a set of appropriate implementations for the proposed compiler. With this compiler, it will be possible to construct programs for devices that use Nios II processor, as embedded systems devices, from Java language, providing an agile manner for applications’ building for this kind of systems. Relevant implementations were performed to prove compiler’s functionalities. Such implementations covered bytecodes’ support to a Java language subset, as well as intermediate structures and final code generation mechanisms. Besides, a simulator and an assembler for Nios II instructions were developed to help this work’s evolution. As result, it was possible to verify that the development of such tool is feasible and contributes to the generation of other tools and applications inserted in the context of reconfigurable computing.
Lima, Willian dos Santos. "Compilação de bytecodes Java para um ambiente de arquitetura reconfigurável /." São José do Rio Preto : [s.n.], 2009. http://hdl.handle.net/11449/98650.
Full textBanca: Eduardo Marques
Banca: Aleardo Manacero Junior
Resumo: Durante esta pesquisa, foram investigados conceitos relacionados à computação reconfigurável, processo de compilação e funcionamento da compilação Java, especialmente no que se refere à manipulação de bytecodes. O principal objetivo é a elaboração conceitual de um compilador capaz de traduzir bytecodes de um aplicativo Java para código binário obediente ao conjunto de instruções do processador Nios II da Altera®, acompanhada de algumas implementações. Com este compilador, será possível a construção de programas para dispositivos que utilizem o processador Nios II, como dispositivos de sistemas embarcados, a partir da linguagem Java. Isto proporciona uma forma ágil para a elaboração de aplicativos para sistemas desse tipo. Implementações relevantes foram desempenhadas de forma a comprovar o funcionamento do referido compilador. Tais implementações abrangeram suporte de bytecodes referentes a um subconjunto da linguagem Java, bem como a criação de estruturas de representação intermediária e mecanismos para geração de código final. Além disso, foram desenvolvidos um simulador e um montador de instruções do Nios II de forma a auxiliar no andamento do trabalho. Como resultado, pôde-se verificar que é possível o desenvolvimento de tal ferramenta e que sua existência contribui para o desenvolvimento de outras ferramentas ou aplicativos inseridos no contexto de computação reconfigurável.
Abstract: During this research, concepts concerning about reconfigurable computing, compiling process and Java compilation were investigated, especially relating to bytecode generation. The goal of this research is twofold: first, the conceptual development of a compiler that is able to translate bytecodes from a Java application to binary code compliant with Altera™ Nios II processor instruction set, and second, provide a set of appropriate implementations for the proposed compiler. With this compiler, it will be possible to construct programs for devices that use Nios II processor, as embedded systems devices, from Java language, providing an agile manner for applications' building for this kind of systems. Relevant implementations were performed to prove compiler's functionalities. Such implementations covered bytecodes' support to a Java language subset, as well as intermediate structures and final code generation mechanisms. Besides, a simulator and an assembler for Nios II instructions were developed to help this work's evolution. As result, it was possible to verify that the development of such tool is feasible and contributes to the generation of other tools and applications inserted in the context of reconfigurable computing.
Mestre
"Otimização bytecode Java na plataforma J2ME." Tese, Biblioteca Digital de Teses e Dissertações da UFPE, 2004. http://www.bdtd.ufpe.br/tedeSimplificado//tde_busca/arquivo.php?codArquivo=1319.
Full textKlein, Gerwin [Verfasser]. "Verified Java bytecode verification / Gerwin Klein." 2003. http://d-nb.info/967128749/34.
Full textWang, Yi-Chieh, and 王繹傑. "Instruction Set Extension for Java Bytecode." Thesis, 2009. http://ndltd.ncl.edu.tw/handle/41889087975284590298.
Full text國立成功大學
工程科學系碩博士班
97
This thesis is to define a subset of Java bytecodes that are suitable for instruction set extension as the basis of CPU executing Java bytecode directly. The first step is to analyze the usage of each Java bytecode from benchmark programs, and then identify the bytecodes suitable for instruction set extension. These experiments are performed on the open-source Java Virtual Machine, the JamVM and GNU Classpath. These experiments collect the usage of Java bytecodes of the DaCapo benchmark suite. We implemented a profiler inside the JVM to help tracing and analyzing Java bytecodes executed. This thesis used ARM instruction’s clock cycles to evaluate each Java bytecode cycle counts. The evaluation method is to multiply the execution times of each bytecode by the implementation’s clock cycles. After evaluation, we propose 28 Java bytecodes for instruction set extension. The cycle counts of these 28 bytecodes are accounted for all of the 81.42% of the benchmark programs.
Šafařík, Tomáš. "Preprocesor Java bytecode pro verifikační nástroje." Master's thesis, 2016. http://www.nusl.cz/ntk/nusl-347971.
Full textTsai, Pao-Chin, and 蔡寶進. "Java Bytecode Obfuscator Using Exception Handling Mechanism." Thesis, 2000. http://ndltd.ncl.edu.tw/handle/62949161489806889919.
Full text國立清華大學
資訊工程學系
88
Recently, mobile computing and enterprise computing are more and more popular over computer networks. In mobile computing, it has become common to distribute mobile programs to the clients at the time when they needed. Because the client platforms are of many types, mobile programs have to be platform-independent. To ensure that, these mobile programs should be in high-level forms and be quite similar to the original source codes. Thus, the common platform-independent codes are easy to be decompiled, and hence they may trap into the risk of malicious reverse engineering attacks. Nowadays, Java bytecode is the most widely-used platform-independent code and many Java programs have been developed and distributed. To get these programs as the form of source code, some Java decompilers, such as SourceAgain and JAD, are developed. To protect those Java bytecodes from being decompiled, the most feasible way is to obfuscate it. Normally, obfuscated code has logically the same behavior in execution as the original one, but much more difficult to be decompiled. Most of the obfuscators today concentrate on attaching many redundant links to complicate program control flow; thus, confuse the decompilers. In this thesis, we propose an effective method, which is based on the Java exception handling mechanism, to extend the obfuscation capability. We hide links in exception tables, and replace original links with redundant and fake links. We replace some branch-like instructions with the so-called exception-generating instructions whose exception handlers are the original blocks. The simplest way is to hide the links in the exception tables directly. But we can strengthen this with several indirect exception links, which make it more robust from being decompiled. Another effective way is to add some fake branches in the control flow to confuse the decompiler. The obfuscated code with faking links can be decompilable but the program logic is no longer meaningful, or even cannot be decompiled because of violating the Java language. In our experiments, the codes obfuscated using our approach are successfully protected from all of the decompilers and unobfuscators that we have found.
Zabel, Martin. "Effiziente Mehrkernarchitektur für eingebettete Java-Bytecode-Prozessoren." Doctoral thesis, 2011. https://tud.qucosa.de/id/qucosa%3A24907.
Full textWu, Jian-Zhi, and 吳劍智. "Bytecode Optimizations on Frame Allocations for Java Processors." Thesis, 2000. http://ndltd.ncl.edu.tw/handle/94953313918078119090.
Full text國立清華大學
資訊工程學系
88
In this thesis, we describe two techniques to optimize hardware stack machine performances on Java environments. Our hardware model basically is a Java processor with a fixed-size stack cache, which directly implements the method frame activation allocations of a software Java virtual machine (JVM). In the first category, we present a technique to solve the problem about the stack allocations for intra-procedural methods in the Java processor. We put emphasis on the issue with the local variable allocation of the method frame. A structure or object unfolding technique can be used to transform heap accesses into stack accesses. The composite object in Java is accessed via heap in memory, while object unfolding transforms heap access to scalar and stack references. For Java processors with a fixed-size stack cache, unlimited employment of structure unfolding techniques however will result in the size of local variables excelling the size of the stack cache. Thus it will reduce the performance gains. For example, ITRI-made Java processor experiences performance penalty in this scenario. To solve this problem, we propose a mechanism, reverse object-unfolding, to report an allocation scheme for a given size of the stack allocation according to our cost model. In the second category of this problem, we also extend our framework for stack allocations to deal with inter-procedural cases. We model this problem into equations and propose a heuristic algorithm based on the domain decomposition of the call graphs of a program to solve the stack allocation problems for inter-procedural cases. Our solution deals with the reduction of both memory references and stack flushes. Our experiment is performed on the ITRI-made Java processor architecture and Kaffe VM simulator. The ITRI-made Java processor is with a fixed-size stack cache and directly allocates the method frames on the stack cache. We report experimental results and profiling data for both intra-procedural and inter-procedural cases. The experiments indicate our proposed methods are promising in speedup Java programs on the Java processor with a fixed-size stack cache.
Chen, Chien-Chung, and 陳建忠. "Instruction Level Parallelism Analysis of Java Bytecode with Folding." Thesis, 1998. http://ndltd.ncl.edu.tw/handle/46868680981727304642.
Full text國立交通大學
資訊工程學系
86
The performance of a stack machine is limited mainly by sequential stackacceses. A performance enhancement mechanism - Stack Operations Folding -was used in Sun Microelectronics' picoJava design. There are another twofolding techniques: fixed- pattern folding and POC model beyond Sun'.In thisthesis, we use the Java bytecode language as the target machine language, analyze the factors affecting ILP, and extract parallelism among bytecodesafter folding using POC model.Five factors: stack pointer renaming, localvariable renaming, finite operations, finite scheduling window size andlimited foldable numbers were simulated and evaluated. Statistical data showthat the ILP can be doubled as compared to original figure of POC model. Andwithout stack pointer renaming, the performance gain is only half oftheoretical upper bound. From the experiments, we observe that 4 operationsfor each PIG (Parallel Instruction Group) is enough to approximate thetheoretical upper bound. With a 32-byte or a 64-byte window size, theperformance can reach 82% or 93% as compared to the infinite window size.Finally, we conclude that stack operations folding and stack pointer renamingare the most important mechanisms in designing higher-end stack machines.
Chen, Hsiang-Yang, and 陳湘揚. "Control Flow Obfuscation and Protection of Java Bytecode Programs." Thesis, 2009. http://ndltd.ncl.edu.tw/handle/13096136575698138666.
Full text國立成功大學
工程科學系碩博士班
97
Software piracy is the unauthorized copying or distribution of copyrighted software. The money loss for software piracy is still very high in this world now. Software protection is used to against software piracy. Software protection techniques disable part or all the functions of a program upon detecting any unwanted modifications. There are many software protection techniques, such as obfuscation, tamper-proofing, software watermarking, cryptography, etc. Java programs can be easily decompiled and reverse engineered from Java bytecode to Java source code by decompilers. So, Java programs are prone to be pirated. Our studies focus on software protection techniques for Java programs. The major contributions are that we develop four methods to protect Java programs by obfuscation, tamper-proofing and software watermarking technologies. Obfuscation is to transfer a source code into a form that is not easy to understand for decompilers. We develop three novel control flow obfuscation methods for protecting Java class files. They are basic block fission obfuscation, intersecting loop obfuscation, and replacing goto obfuscation. Multi-level exit obfuscation and single-level exit obfuscation are also implemented for comparison. Tamper-proofing techniques will disable some or all of the program functionality once they detect any unwanted modifications during run time. First, we propose a tamper-proofing software technology on basis paths for stack-machine based languages, such as Java, by improving oblivious hashing. Our approach is based on a new dynamic stack-tracing approach which inserts hash instructions to monitor the top of the stack to check whether the running program has been tampered with or not. Second, we propose an approach to robustly protect the data of a dominant path in a method of a Java bytecode program by integrating oblivious hashing, guards network, and control flow obfuscation. A dominator tree based on the basic blocks of the target method is first built. Then the dominant path of the dominator tree is selected. The bytecodes of the dominant path are then transformed by the oblivious hashing, guards network, and control flow obfuscation. Software watermarking protects software through embedding some secret information into software as an identifier of the ownership of copyright for this software. We use the propose obfuscation and tamper-proofing techniques to make software watermarks hard to find and to protect the program(s). In summary, this dissertation presents obfuscation, tamper-proofing and software watermarking technologies to protect Java bytecode programs based on our enhanced oblivious hashing, guards network, and control flow obfuscation and to reach the goal to protect Java programs.
TANG, CHING HUI, and 鄭秦輝. "The Study and Implementation of the Java Bytecode Compiler." Thesis, 1998. http://ndltd.ncl.edu.tw/handle/67329828531522416740.
Full text國立清華大學
資訊工程學系
86
Java虛擬機器(virtual machine)是由昇陽公司提出的一種支援Java程式 語言的執行環境,具有嚴格安全檢查,跨平台支援等優點。當時昇陽公司 以Java語言發展HotJava WWW Browser來展示Java程式和Applet,結果在 網際網路(Internet)上造成一股流行風潮,加上後來各個公司的WWW Browser都納入Java虛擬機器,因而將Java系統推上了流行的高峰。雖然 Java程式語言本身具有很多的優點,但Java虛擬機器的執行速度過慢,無 法做為大量科學計算,大架構(large-scale)程式,及發展embedding系統 等等的平台。昇陽公司為了解決這個問題,同時採取幾種方法,包括使用 硬體來加速位元組碼的執行,如執行Java Bytecode的CPU(picoJava)及軟 體上更進,如即時編譯(JIT)等技巧。在本論文中,我們研究與實作Java 位元組碼(bytecode)的靜態編譯器。主要的目的是實作一個具有最佳化的 Java位元組碼靜態編譯器(Java Bytecode Native Compiler),希望可以 使得Java的應用擴充到需要具有高速運算的領域。我們採取的做法是以自 由軟體基金會(Free Software Foundation)的GCC系統做為基本骨幹,設 計並實作了Java 位元組的驗證器和轉譯器,可讀進Java的類別檔,處理 後產生組合語言碼。但由於缺少執行環境,所以無法連結成執行檔,未來 ,可和其他虛擬機器做整合,才算完成系統的建立。
Gopinadhan, Gautam V. S. "Architecture for using Java bytecode for processing Digital Items." 2003. http://www.lib.ncsu.edu/theses/available/etd-12182003-061448/unrestricted/etd.pdf.
Full textLin, You-Chen, and 林祐辰. "Implementation of Java 8-compliant InvokeDynamic Bytecode for CVM." Thesis, 2019. http://ndltd.ncl.edu.tw/handle/5g5md9.
Full text國立交通大學
資訊科學與工程研究所
107
CVM (the J2ME/CDC JIT-capable VM) is a Java virtual machine released by Sun Microsystems for connected devices. Compare with other JVMs, CVM has some features that are suitable for embedded systems, such as, smaller code size, a high performance Just-in-time compiler, and a small 126-class core library for minimal Java application execution. Most importantly, it has been ported to the largest number of different CPU architecture. However, the open-source version of CVM only supports Java 2 Micro Edition (J2ME). After the acquisition of Sun by Oracle, they stop releasing the new source code of CVM. The goal of this paper is to modify the open-source version of CVM to support the InvokeDynamic bytecode, which was added to the JVM specification since Java 7. The InvokeDynamic instruction provides a cleaner interface for method invocations. In particular, starting in Java 8, Lambda expressions are extensively used for method invocation. Java source code with Lambda expressions will be compiled to InvokeDynamic bytecodes. In addition to adding the bytecode support for InvokeDynamic to CVM, we will also extend the CVM classes library with the Java classes required by InvokeDynamic. In this thesis, the OpenJDK lambda expression tests will be used to verify the proposed implementation. We will also use some large open-source Java programs that contain lambda expressions to verify the correctness of the modified CVM.
Ascott, Robert John. "JavaFlow : a Java DataFlow Machine." Thesis, 2014. http://hdl.handle.net/2152/28390.
Full texttext