Lably
Skip to content

Jython

Java implementation of Python

  • 3 min read
  • 5 chapters

Related on Lably

Through Python (programming language), Java virtual machine and Java (programming language)

Overview

Jython programs can import and use any Java class. Except for some standard modules, Jython programs use Java classes instead of Python module. Jython includes almost all of the modules in a standard Python language distribution, lacking only some of the modules implemented originally in C, and can call Java classes, such as the Java Class Library. For example, a user interface in Jython could be written with Swing, Abstract Window Toolkit (AWT), or Standard Widget Toolkit (SWT). Jython compiles Python source code to Java bytecode (an intermediate representation) either on demand or statically.

<span id="mwKw"></span><span class="kn" id="mwLA">from</span><span class="w" id="mwLQ"> </span><span class="nn" id="mwLg">java.io</span><span class="w" id="mwLw"> </span><span class="kn" id="mwMA">import</span> <span class="n" id="mwMQ">FileWriter</span> <span class="kn" id="mwMg">from</span><span class="w" id="mwMw"> </span><span class="nn" id="mwNA">java.lang</span><span class="w" id="mwNQ"> </span><span class="kn" id="mwNg">import</span> <span class="n" id="mwNw">System</span> <span class="kn" id="mwOA">from</span><span class="w" id="mwOQ"> </span><span class="nn" id="mwOg">java.util</span><span class="w" id="mwOw"> </span><span class="kn" id="mwPA">import</span> <span class="n" id="mwPQ">Date</span> <span class="c1" id="mwPg"># Write out the current date and the system info</span> <span class="n" id="mwPw">message</span> <span class="o" id="mwQA">=</span> <span class="s2" id="mwQQ">"Run on "</span> <span class="o" id="mwQg">+</span> <span class="nb" id="mwQw">str</span><span class="p" id="mwRA">(</span><span class="n" id="mwRQ">Date</span><span class="p" id="mwRg">())</span> <span class="o" id="mwRw">+</span> <span class="s2" id="mwSA">" by Java "</span> <span class="o" id="mwSQ">+</span> <span class="n" id="mwSg">System</span><span class="o" id="mwSw">.</span><span class="n" id="mwTA">getProperty</span><span class="p" id="mwTQ">(</span><span class="s2" id="mwTg">"java.version"</span><span class="p" id="mwTw">)</span> <span class="n" id="mwUA">FileWriter</span><span class="p" id="mwUQ">(</span><span class="s2" id="mwUg">"sys_info.txt"</span><span class="p" id="mwUw">)</span><span class="o" id="mwVA">.</span><span class="n" id="mwVQ">append</span><span class="p" id="mwVg">(</span><span class="n" id="mwVw">message</span><span class="p" id="mwWA">)</span><span class="o" id="mwWQ">.</span><span class="n" id="mwWg">close</span><span class="p" id="mwWw">()</span> <span class="nb" id="mwXA">print</span> <span class="n" id="mwXQ">message</span>

Because Jython maps threads directly onto Java threads, it avoids the global interpreter lock which standard Python uses.

Jython cannot make use of Java's type system or generics. Jython uses the primitive wrapper classes primarily for unboxing Java API return types back to Jython internal types.

Sign in to keep reading

4 more chapters are free with a Lably account.

More in Computing and communication