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
- Load the extension In your first notebook cell, load the magic:
%load_ext java_magic
- 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!");
- Run interactive Java code
If the extension detects Scanner or System.in, it automatically switches to an interactive terminal loop:
(Tip: Add
%jsto )
%%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 + "!");
-
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)
| File | Size | Uploaded | |
|---|---|---|---|
| java_magic-0.1.7.tar.gz | 5.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|