Skip to content
This repository has been archived by the owner. It is now read-only.
A transpiler that converts Python code into Java bytecode
Python Java
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Updating the directory listing Apr 25, 2020
lib Downgrade from checkstyle 7.6 to 6.19 Mar 7, 2017
python Added SimpleNamespace implementation Apr 25, 2020
requirements updating supported version of python in docs Oct 11, 2017
stdlib_tests Add test for chunk Jun 14, 2018
tests blank spaces Apr 25, 2020
tools Merge pull request #964 from whydoubt/pybee_to_beeware Jul 28, 2019
voc iterable unpacking: handle nesting Aug 17, 2019
.editorconfig Add EditorConfig file Aug 7, 2017
.gitignore Add docs contribution guide. Jun 26, 2019
AUTHORS Initial commit of classfile generator code. Aug 16, 2015
AndroidManifest.xml Simplified Android Manifest definition. Oct 7, 2015 Change most remaining 'PyBee' references to 'BeeWare' Jul 24, 2019
LICENSE Initial commit of classfile generator code. Aug 16, 2015 Added missing files from manifest. Feb 2, 2016
README.rst Put up the shutters on VOC for now. May 31, 2020
beekeeper.yml Add Beekeeper config for Py3.7 Aug 17, 2019
build-android.xml Integrate stdlib build into jar build. Aug 18, 2017
build-java.xml Integrate stdlib build into jar build. Aug 18, 2017
build.xml Bumped version number for v0.1.6 release. Sep 8, 2018
checkstyle.xml Disable FileLength check in ant checkstyle config Oct 17, 2017
setup.cfg Ignore tools from flake8 checks. Jul 27, 2017 Update package metadata. Aug 18, 2019


VOC is currently on hiatus

The BeeWare project has pivoted away from using VOC for Android development. We now use an embedded CPython library to provide Android support.

We still believe there is value in a bytecode compilation approach; however, we're not dedicating any BeeWare resources to VOC development, and we we're not encouraging other to contribute to VOC at this time.

If you're still interested in working on VOC, please get in touch.


A transpiler that converts Python code into Java bytecode.

This is experimental code. If it breaks, you get to keep all the shiny pieces.

What it does:

  • Provides an API to let you programmatically create Java class files.
  • Compiles Python 3.4 source files into Java class files, enabling you to run Python code on a JVM (including Android's VM).

It isn't a completely compliant Python 3.4 implementation - there are some language features (some builtin functions) that still need to be implemented, and there is only a bare bones standard library implementation. However, it is possible to convert simple Python programs, and even write simple Android applications.


To take VOC for a spin, run through the Getting Started guide, then start with the first tutorial.

If you'd like to contribute to VOC development, we have a guide for first time contributors.


Documentation for VOC can be found on Read The Docs.

Why "VOC"?

VOC is a backronym for "Vestigial Output Compiler". Or "Vexing Obtuse Compiler". Or "Valuable Obscure Compiler". Or "Varigated Ocelot Calibrator". It's your choice.

Historically, VOC was the Vereenigde Oostindische Compagnie (VOC), or Dutch East India Company, often considered to be the world's first multinational corporation. It was also the first company to issue shares, and facilitate the trading of those shares. It was granted a 21 year monopoly to carry out trade activities in Asia, primarily the Spice Islands - the Dutch East Indies. They established a major trading port at Batavia - now Jakarta - on the island of Java (now part of Indonesia).

While VOC was a very profitable business for it's shareholders, it operated as a colonial power. Modern historians have expressed criticism of their business practices, which included exploitation of indigenous populations (including use of slave labour), slave trade, use of violence, and environmental destruction (including deforestation).

VOC also played a role in the European discovery of Australia, and there are many VOC shipwrecks on the coast of Western Australia.

The name VOC was chosen by the project because the project founder is from Western Australia, and VOC has a strong non-colonial presence in that state's history. It was also a convenient pun, as VOC was an enterprise Java company.

It should not be considered an endorsement or glorification of the exploitative business practices of the company.


VOC is part of the BeeWare suite. You can talk to the community through:

We foster a welcoming and respectful community as described in our BeeWare Community Code of Conduct.


To get started with contributing to VOC, head over to our First Timers Guide.

If you experience problems with VOC, log them on GitHub. If you want to contribute code, please fork the code and submit a pull request.

You can’t perform that action at this time.