Skip to main content

Finch: A System for Evolving Java (Bytecode)

  • Chapter
  • First Online:
Genetic Programming Theory and Practice VIII

Part of the book series: Genetic and Evolutionary Computation ((GEVO,volume 8))

Abstract

The established approach in genetic programming (GP) involves the definition of functions and terminals appropriate to the problem at hand, after which evolution of expressions using these definitions takes place. We have recently developed a system, dubbed FINCH (Fertile Darwinian Bytecode Harvester), to evolutionarily improve actual, extant software, which was not intentionally written for the purpose of serving as a GP representation in particular, nor for evolution in general. 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. The ability to evolve Java programs will hopefully lead to a valuable new tool in the software engineer’s toolkit.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  • Arcuri, Andrea (2009). Automatic Software Generation and Improvement Through Search Based Techniques. PhD thesis, University of Birmingham, Birmingham, UK.

    Google Scholar 

  • Brameier, Markus and Banzhaf, Wolfgang (2007). Linear Genetic Programming. Number XVI in Genetic and Evolutionary Computation. Springer.

    Google Scholar 

  • Bruneton, Eric, Lenglet, Romain, and Coupaye, Thierry (2002). ASM: A code manipulation tool to implement adaptable systems (Un outil de manipulation de code pour la réalisation de systèmes adaptables). In Adaptable and Extensible Component Systems (Systèmes à Composants Adaptables et Extensibles) October 17–18, 2002, Grenoble, France, pages 184–195.

    Google Scholar 

  • Engel, Joshua (1999). Programming for the JavaTM Virtual Machine. Addison-Wesley, Reading, MA, USA.

    Google Scholar 

  • Gosling, James, Joy, Bill, Steele, Guy, and Bracha, Gilad (2005). The JavaTM Language Specification. The JavaTM Series. Addison-Wesley, Boston, MA, USA, third edition.

    Google Scholar 

  • Harman, Mark (2010). Automated patching techniques: The fix is in. Communications of the ACM, 53(5):108.

    Article  Google Scholar 

  • Kotzmann, Thomas, Wimmer, Christian, Mössenböck, Hanspeter, Rodriguez, Thomas, Russell, Kenneth, and Cox, David (2008). Design of the Java HotSpotTM client compiler for Java 6. ACM Transactions on Architecture and Code Optimization, 5(1):7:1–32.

    Article  Google Scholar 

  • Koza, John R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, MA, USA.

    MATH  Google Scholar 

  • Langdon, W. B. and Poli, R. (2006). The halting probability in von Neumann architectures. In Collet, Pierre, Tomassini, Marco, Ebner, Marc, Gustafson, Steven, and Ekárt, Anikó, editors, Proceedings of the 9th European Conference on Genetic Programming, volume 3905 of Lecture Notes in Computer Science, pages 225–237, Budapest, Hungary. Springer.

    Google Scholar 

  • Lindholm, Tim and Yellin, Frank (1999). The JavaTM Virtual Machine Specification. The JavaTM Series. Addison-Wesley, Boston, MA, USA, second edition.

    Google Scholar 

  • Miecznikowski, Jerome and Hendren, Laurie (2002). Decompiling Java bytecode: Problems, traps and pitfalls. In Horspool, R. Nigel, editor, Compiler Construction: 11th International Conference, CC 2002, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2002, Grenoble, France, April 8–12, 2002, volume 2304 of Lecture Notes in Computer Science, pages 111–127, Berlin/Heidelberg. Springer-Verlag.

    Google Scholar 

  • Mizoguchi, Jun’ichi, Hemmi, Hitoshi, and Shimohara, Katsunori (1994). Production genetic algorithms for automated hardware design through an evolutionary process. In Proceedings of the First IEEE Conference on Evolutionary Computation, ICEC’94, volume 2, pages 661–664.

    Google Scholar 

  • Nakamura, Yukihiro, Oguri, Kiyoshi, and Nagoya, Akira (1991). Synthesis from pure behavioral descriptions. In Camposano, Raul and Wolf, Wayne Hendrix, editors, High-Level VLSI Synthesis, pages 205–229. Kluwer, Norwell, MA, USA.

    Google Scholar 

  • Northrop, Linda et al. (2006). Ultra-Large-Scale Systems: The Software Challenge of the Future. Carnegie Mellon University, Pittsburgh, PA, USA.

    Google Scholar 

  • O’Neill, Michael and Ryan, Conor (2003). Grammatical Evolution: Evolutionary Automatic Programming in a Arbitrary Language, volume 4 of Genetic programming. Kluwer Academic Publishers.

    Google Scholar 

  • Orlov, Michael and Sipper, Moshe (2009). Genetic programming in the wild: Evolving unrestricted bytecode. In Raidl,G¨unther et al., editors, Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation, July 8–12, 2009, Montréal Québec, Canada, pages 1043–1050, New York, NY, USA. ACM Press.

    Google Scholar 

  • Orlov, Michael and Sipper, Moshe (2010). Flight of the FINCH through the Java wilderness. IEEE Transactions on Evolutionary Computation. In press.

    Google Scholar 

  • Poli, Riccardo, Langdon, William B., and McPhee, Nicholas Freitag (2008). A field guide to genetic programming. Published via http://lulu.com and freely available at http://www.gp-field-guide.org.uk. (With contributions by J. R. Koza).

  • Spector, Lee and Robinson, Alan (2002). Genetic programming and autoconstructive evolution with the Push programming language. Genetic Programming and Evolvable Machines, 3(1):7–40.

    Article  MATH  Google Scholar 

  • Turing, Alan Mathison (1950). Computing machinery and intelligence. Mind, 59(236):433–460.

    Article  MathSciNet  Google Scholar 

  • Wong, Man Leung and Leung, Kwong Sak (2000). Data Mining Using Grammar Based Genetic Programming and Applications, volume 3 of Genetic Programming. Kluwer, Norwell, MA, USA.

    Google Scholar 

  • Woodward, John R. (2003). Evolving Turing complete representations. In Sarker, Ruhul et al., editors, The 2003 Congress on Evolutionary Computation, CEC 2003, Canberra, Australia, 8–12 December, 2003, volume 2, pages 830–837. IEEE Press.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this chapter

Cite this chapter

Orlov, M., Sipper, M. (2011). Finch: A System for Evolving Java (Bytecode). In: Riolo, R., McConaghy, T., Vladislavleva, E. (eds) Genetic Programming Theory and Practice VIII. Genetic and Evolutionary Computation, vol 8. Springer, New York, NY. https://doi.org/10.1007/978-1-4419-7747-2_1

Download citation

  • DOI: https://doi.org/10.1007/978-1-4419-7747-2_1

  • Published:

  • Publisher Name: Springer, New York, NY

  • Print ISBN: 978-1-4419-7746-5

  • Online ISBN: 978-1-4419-7747-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics