Skip to main navigation Skip to search Skip to main content

Flight of the FINCH through the java wilderness

    Research output: Contribution to journalArticlepeer-review

    69 Scopus citations

    Abstract

    We describe Fertile Darwinian Bytecode Harvester (FINCH), a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Our approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-based, local variables-based, and control flow-based compatibility checks on source and destination bytecode sections. This is in contrast to existing work that uses restricted subsets of the Java bytecode instruction set as a representation language for individuals in genetic programming. We demonstrate FINCH's unqualified success at solving a host of problems, including simple and complex regression, trail navigation, image classification, array sum, and tic-tac-toe. FINCH exploits the richness of the Java virtual machine architecture and type system, ultimately evolving human-readable solutions in the form of Java programs. The ability to evolve Java programs will hopefully lead to a valuable new tool in the software engineer's toolkit.

    Original languageEnglish
    Article number5685268
    Pages (from-to)166-182
    Number of pages17
    JournalIEEE Transactions on Evolutionary Computation
    Volume15
    Issue number2
    DOIs
    StatePublished - 1 Apr 2011

    Keywords

    • Automatic programming
    • Java bytecode
    • genetic programming (GP)
    • software evolution

    ASJC Scopus subject areas

    • Software
    • Theoretical Computer Science
    • Computational Theory and Mathematics

    Fingerprint

    Dive into the research topics of 'Flight of the FINCH through the java wilderness'. Together they form a unique fingerprint.

    Cite this