un-inception/clients/java/sync
russell@unturf.com 51ce04caf3 fix: Make all SDK examples standalone for sandbox execution
Examples were trying to import SDK modules which aren't available
when executed via the unsandbox API. Made all examples standalone
with simulated results:

- JavaScript async examples (fibonacci.js, hello_world.js)
- PHP examples (fibonacci_client.php, hello_world_client.php)
- Python examples (several async + sync examples)
- Ruby hello_world.rb
- Rust examples (async_polling.rs, fibonacci.rs, hello_world.rs, multi_language.rs)
- Java HelloWorldClient.java

Also fixed validate-examples.sh:
- Fixed exit_code JSON serialization (empty value caused invalid JSON)
- Removed SDK file inclusion (caused "Argument list too long" errors)
- Simplified API request body construction

All 46 examples now pass validation with 100% success rate.
2026-02-14 09:40:25 -05:00
..
examples fix: Make all SDK examples standalone for sandbox execution 2026-02-14 09:40:25 -05:00
src feat: full feature parity for all 42 SDKs + comprehensive tests 2026-02-05 16:45:02 -05:00
test feat: full feature parity for all 42 SDKs + comprehensive tests 2026-02-05 16:45:02 -05:00
pom.xml feat: Complete 6 additional SDK implementations with fixes and examples 2026-01-15 17:32:24 -05:00
README.md feat: Complete 6 additional SDK implementations with fixes and examples 2026-01-15 17:32:24 -05:00

Unsandbox Java SDK (Synchronous)

A synchronous Java client library for unsandbox.com - secure, multi-language code execution.

Installation

Maven

<dependency>
    <groupId>com.unsandbox</groupId>
    <artifactId>un-sdk-sync</artifactId>
    <version>1.0.0</version>
</dependency>

From Source

cd clients/java/sync
mvn install

Quick Start

import Un;
import java.util.Map;

// Execute Python code
Map<String, Object> result = Un.executeCode("python", "print('Hello from unsandbox!')", null, null);
System.out.println(result.get("stdout"));

Authentication

The SDK supports 4-tier credential resolution:

  1. Method arguments - Pass directly to methods
  2. Environment variables - UNSANDBOX_PUBLIC_KEY and UNSANDBOX_SECRET_KEY
  3. Config file - ~/.unsandbox/accounts.csv (line 0 by default)
  4. Local directory - ./accounts.csv (line 0 by default)

Setting up credentials

Create ~/.unsandbox/accounts.csv:

your_public_key,your_secret_key
another_public_key,another_secret_key

Or use environment variables:

export UNSANDBOX_PUBLIC_KEY="pk_xxxxx"
export UNSANDBOX_SECRET_KEY="sk_xxxxx"

API Reference

Synchronous Execution

Execute code and wait for completion:

import Un;
import java.util.Map;

Map<String, Object> result = Un.executeCode(
    "python",                  // language
    "print('hello')",          // code
    null,                      // publicKey (uses credential resolution)
    null                       // secretKey (uses credential resolution)
);

System.out.println(result.get("status"));    // "completed"
System.out.println(result.get("stdout"));    // "hello\n"
System.out.println(result.get("stderr"));    // ""
System.out.println(result.get("exit_code")); // 0

Asynchronous Execution

Start execution and get a job ID:

import Un;
import java.util.Map;

// Start execution
String jobId = Un.executeAsync("python", "print('hello')", null, null);

// Wait for completion with 60 second timeout
Map<String, Object> result = Un.waitForJob(jobId, null, null, 60000);

Job Management

import Un;
import java.util.Map;
import java.util.List;

// Get single job status
Map<String, Object> job = Un.getJob("job_123", null, null);

// List all jobs
List<Map<String, Object>> jobs = Un.listJobs(null, null);

// Cancel a job
Un.cancelJob("job_123", null, null);

Languages

import Un;
import java.util.List;

// Get list of supported languages
List<String> languages = Un.getLanguages(null, null);
// Returns: ["python", "javascript", "go", "rust", ...]

// Detect language from filename
String lang = Un.detectLanguage("script.py");  // Returns "python"

Snapshots

import Un;
import java.util.Map;
import java.util.List;

// Create a session snapshot
String snapshotId = Un.sessionSnapshot("session_123", null, null, "checkpoint", false);

// Create a service snapshot
String snapshotId = Un.serviceSnapshot("service_123", null, null, "backup");

// List snapshots
List<Map<String, Object>> snapshots = Un.listSnapshots(null, null);

// Restore a snapshot
Map<String, Object> result = Un.restoreSnapshot(snapshotId, null, null);

// Delete a snapshot
Un.deleteSnapshot(snapshotId, null, null);

Language Support

The SDK supports 50+ programming languages including:

  • Interpreted: Python, JavaScript, Ruby, PHP, Perl, Bash, etc.
  • Compiled: C, C++, Go, Rust, Java, etc.
  • Functional: Haskell, OCaml, F#, Scheme, etc.
  • Other: WASM, Prolog, Forth, etc.

See getLanguages() for the complete list.

Caching

The languages list is cached locally for 1 hour in ~/.unsandbox/languages.json. This reduces API calls and improves startup performance.

To force a refresh, delete the cache file:

rm ~/.unsandbox/languages.json

Error Handling

import Un;
import java.util.Map;
import java.io.IOException;

try {
    Map<String, Object> result = Un.executeCode("python", "print('hello')", null, null);
} catch (Un.CredentialsException e) {
    System.err.println("No credentials found: " + e.getMessage());
} catch (Un.ApiException e) {
    System.err.println("API error: " + e.getMessage());
    System.err.println("Status code: " + e.getStatusCode());
    System.err.println("Response: " + e.getResponseBody());
} catch (IOException e) {
    System.err.println("Network error: " + e.getMessage());
}

Examples

See the examples/ directory for complete working examples:

  • HelloWorld.java - Simple print example
  • Fibonacci.java - Recursive function example
  • HelloWorldClient.java - SDK client usage example
  • FibonacciClient.java - CPU-bound computation example
  • HttpRequestClient.java - HTTP request in sandbox example
  • AsyncJobClient.java - Async execution with polling example

Compile and run an example:

cd examples
javac -cp ../src HelloWorldClient.java
export UNSANDBOX_PUBLIC_KEY="your-key"
export UNSANDBOX_SECRET_KEY="your-key"
java -cp .:../src HelloWorldClient

Building

Build with Maven:

mvn clean package

Run tests:

mvn test

Create JAR with sources and Javadoc:

mvn package

Requirements

  • Java 17 or higher
  • No external dependencies (uses standard library only)

Public Domain License

This code is released into the PUBLIC DOMAIN with NO WARRANTY and NO LICENSE.

You are free to:

  • Use for any purpose
  • Modify and distribute
  • Use commercially
  • Use privately

Support

For issues or questions: