Skip to main content

Java Magic for Google Colab

A lightweight Notebook extension to write, compile, and execute Java code directly inside cells. It features automatic Google Colab setup and real-time interactive console input support (Scanner, System.in).

🛠️ Installation

pip install java-magic

🚀 Quick Start

  1. Load the extension In your first notebook cell, load the magic:
%load_ext java_magic
  1. Run standard Java code You don't even need a main class wrapper for simple snippets; the extension handles it automatically:
%%java
System.out.println("Hello from Jupyter!");

💡 Tip: Syntax Highlighting

By default, Jupyter notebooks might not highlight Java code inside custom magic cells. To enable syntax highlighting, simply add %%js right next to the magic command like this:

%%java %%js
System.out.println("This code will be colored!");
  1. Run interactive Java code If the extension detects Scanner or System.in, it automatically switches to an interactive terminal loop: (Tip: Add %js to )
%%java %%js
import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
  1. Multi-cell Execution You can define a class in one cell and use it in another!

    Cell 1: Define a class

%%java %%js
package math;

/**
 * Clase de utilidad para operaciones matemáticas básicas.
 */
public class Calculadora {

    /**
     * Suma dos números enteros.
     * @param a El primer operando.
     * @param b El segundo operando.
     * @return La suma de a y b.
     */
    public static int sumar(int a, int b) {
        return a + b;
    }
}

Cell 2: Use the class

%%java %%js
import math.Calculadora;

int x = 10;
int y = 25;
int resultado = Calculadora.sumar(x, y);

System.out.println("El resultado de la suma es: " + resultado);

📚 Generate JavaDoc

You can easily render interactive HTML documentation right inside your notebook using the %javadoc magic command.

By default, the extension automatically deletes generated .java files after compilation to keep your workspace clean. Only the compiled .class files are preserved so you can use them across different cells.

However, if you want to generate documentation using Javadoc, the source code must be present in the directory.

%config JavaMagics.remove_java_file = False

Run your cell normally (e.g., the one containing math.Calculadora). Since the configuration was changed, both the .class and the .java files will now be saved in your environment.

Now you can pass the path of the .java file to the %javadoc line magic to display the interactive, scrollable HTML documentation directly inside your notebook:

%javadoc math/Calculadora.java

🧠 Technical Details & Architecture

When you run a cell, the extension creates physical .java and .class files in your environment's current working directory (e.g., Google Colab's /content). You can verify they exist by running:

!ls -R | grep -E "class|java"

How it differs from IJava Unlike the IJava kernel, this extension is not a continuous REPL. State is not saved: Variables declared in one cell (e.g., int x = 5;) do not persist in memory for the next cell.

📄 License MIT

Metadata

Release files for java-magic 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for java-magic 0.1.7
File Size Uploaded
java_magic-0.1.7.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for java-magic 0.1.7
File Interpreter ABI Platform
java_magic-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 11.3 kB

Release files / java_magic-0.1.7.tar.gz

Download URL java_magic-0.1.7.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
dcaba2f1b937a072129d1c75cc1943b52cbb8631336cf5620dca005f6bac5639
BLAKE2b-256 checksum
How to use checksums
2a343fd40ff759d90483ea660247e83c53ea465af1386005dd9b17d623c1c0da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.8

Release files / java_magic-0.1.7-py3-none-any.whl

Download URL java_magic-0.1.7-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d0962ea15a292d1b70a87c13b16c5c03797cebe59684c8437bdc961e7924456d
BLAKE2b-256 checksum
How to use checksums
74e45d369a74fcceb779a8ed4cf3a5f6f9cea88ad80b67467cad2857b651d3f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.8

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page