繁中

Judge0開源在線代碼執行API系統

Judge 0是一款免費開源的在線代碼執行工具,可以安全地運行90多種程式語言的代碼。它高效運行,支持彈性擴展,採用沙盒隔離機制,適合人工智慧代理、編程平台、在線教育、工作技術評估等場景。您可以通過其簡單的API或Python SDK輕鬆執行代碼-可以自己託管它或直接使用雲服務。使用Judge 0,您可以快速構建應用程式,而無需管理伺服器,從而節省開發時間並確保代碼測試的安全性。

在構建在線編程平台、代碼評估系統或教學工具時,一個核心問題仍然存在:

我怎麼 安全運行用戶提交的代碼 在我的伺服器上?

Judge 0正是提供了這種功能

它是一個開源在線代碼執行和評估系統,通過標準化API提供「代碼提交、-編譯、運行、-返回結果」的完整流程。

項目定位

從本質上講,Judge 0不是一個圖形軟體,而是:

RESTful代碼執行API服務

它允許外部系統通過HTTP請求提交原始碼,指定語言和運行參數,然後獲取執行結果,包括:

  • 標準輸出(標準輸出)
  • 標準誤差(stderr)
  • 運行時
  • 內存使用
  • 退出狀態代碼

這使得它能夠作為後台基礎組件集成到各種平台中。

支持的語言和操作環境

Judge 0支持90多種語言和運行時配置,包括但不限於:

  • C / C++
  • Python
  • Java
  • JavaScript
  • Kotlin
  • Swift

需要注意的是,語言數量包括不同的版本和運行環境,因此「90+」更準確地理解為多種語言和多種運行配置的組合。

安全機制和執行方法

Judge 0通過容器隔離(通常基於Docker和隔離)執行代碼。

每個代碼提交在受控環境中運行,並且可以設置為:

  • 時限
  • 內存限制
  • CPU限制

這種沙盒機制可以防止惡意代碼影響主機系統,並且是在線評估系統的關鍵功能。

如何用途:

Judge 0是API優先設計的。

典型過程如下:

  1. 提交代碼(Post請求)
  2. 獲取提交ID
  3. 查詢執行結果(民意調查或回調)

請求結構示例:

{
 「source_code」:「print(' hello ')」,
 「langue_id」:71
}

返回示例:

{
 「stdout」:「hellon」,
 「時間」:「0.01」,
 「記憶」:12345
}

由於它是標準的REST API,因此可以用任何語言(Python、Node.js、PHP、Go等)調用。

部署方法

Judge 0提供了多種部署選項:

  • Docker編寫部署
  • 貨櫃化作業
  • Kubernetes集群部署
  • 使用官方公共API實例

如果您自己部署,則需要伺服器環境;如果您使用公共API,則可以消除基礎設施管理。

應用場景

Judge 0的常見應用包括:

  • 在線評估系統(OJ)
  • 編程實踐平台
  • 教學自動批改系統
  • 在線IDE的代碼運行後台
  • 技術評價體系
  • 代碼沙盒服務

在最近的應用程式中,它還可以用作人工智慧生成代碼的執行引擎,但這種用途是擴展場景,而不是項目的原始定位。

技術特點:

  • 開源(麻省理工學院許可證)
  • 多語言支持
  • 沙盒隔離強制執行
  • API驅動的設計
  • 可擴展隊列機制
  • 支持同步任務處理

Judge 0更像是一個「基礎設施組件」,而不是面向最終用戶的應用程式。

Github:https://github.com/judge0/judge0
管材:

返回頂端