Finch: A System for Evolving Java (Bytecode)

  • Michael Orlov
  • Moshe Sipper
Part of the Genetic and Evolutionary Computation book series (GEVO, volume 8)


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.


Java bytecode automatic programming software evolution genetic programming 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Arcuri, Andrea (2009). Automatic Software Generation and Improvement Through Search Based Techniques. PhD thesis, University of Birmingham, Birmingham, UK.Google Scholar
  2. Brameier, Markus and Banzhaf, Wolfgang (2007). Linear Genetic Programming. Number XVI in Genetic and Evolutionary Computation. Springer.Google Scholar
  3. 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
  4. Engel, Joshua (1999). Programming for the JavaTM Virtual Machine. Addison-Wesley, Reading, MA, USA.Google Scholar
  5. 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
  6. Harman, Mark (2010). Automated patching techniques: The fix is in. Communications of the ACM, 53(5):108.CrossRefGoogle Scholar
  7. 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.CrossRefGoogle Scholar
  8. Koza, John R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, MA, USA.zbMATHGoogle Scholar
  9. 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
  10. Lindholm, Tim and Yellin, Frank (1999). The JavaTM Virtual Machine Specification. The JavaTM Series. Addison-Wesley, Boston, MA, USA, second edition.Google Scholar
  11. 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
  12. 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
  13. 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
  14. Northrop, Linda et al. (2006). Ultra-Large-Scale Systems: The Software Challenge of the Future. Carnegie Mellon University, Pittsburgh, PA, USA.Google Scholar
  15. 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
  16. 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
  17. Orlov, Michael and Sipper, Moshe (2010). Flight of the FINCH through the Java wilderness. IEEE Transactions on Evolutionary Computation. In press.Google Scholar
  18. Poli, Riccardo, Langdon, William B., and McPhee, Nicholas Freitag (2008). A field guide to genetic programming. Published via and freely available at (With contributions by J. R. Koza).
  19. 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.zbMATHCrossRefGoogle Scholar
  20. Turing, Alan Mathison (1950). Computing machinery and intelligence. Mind, 59(236):433–460.CrossRefMathSciNetGoogle Scholar
  21. 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
  22. 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

Copyright information

© Springer Science+Business Media, LLC 2011

Authors and Affiliations

  • Michael Orlov
    • 1
  • Moshe Sipper
    • 1
  1. 1.Department of Computer ScienceBen-Gurion UniversityBen-GurionIsrael

Personalised recommendations