使用 Jupyter 和 Kotlin 建立筆記本
介紹
最近,我開始深入 Kotlin 的世界,這是一種吸引了我注意力的現代多功能程式語言。然而,由於有人習慣了 Jupyter 的互動式環境,它允許快速迭代和流暢的程式碼探索,我想知道 Kotlin 是否存在類似的東西。
令我驚訝的是,我發現 Kotlin 有一個 Jupyter 核心。該工具將 Kotlin 的強大和優雅與 Jupyter 的互動性和易用性結合在一起,為學習和實驗語言創建了一個理想的開發環境。
在這篇文章中,我將分享我在 Kotlin 支援下設定 Jupyter 環境的經驗,我甚至會更進一步,創建一個允許您同時使用多種語言的筆記本。
使用 Kotlin 建立容器
為 Jupyter 安裝 Kotlin 核心相對簡單,特別是如果我們使用 Docker 建立一個受控且可重現的環境。讓我們看看我為此目的創建的 Dockerfile – 檢查註釋以了解每個步驟:
Dockerfile
我們從 quay.io 下載的官方 Jupyter 鏡像開始。我們使用特定版本來確保可重複性,並將圖像標記為 kotlin-kernel 以便於識別。
FROM quay.io/jupyter/base-notebook:2024-12-31 AS kotlin-kernel
我們安裝執行 Kotlin 所必需的 OpenJDK 21,以 root 身分安裝以避免權限問題,然後切換到非 root 使用者以確保鏡像的安全。
USER root RUN apt-get update && apt-get -y install openjdk-21-jdk USER jovyan
我們為 Jupyter 安裝 Kotlin 內核,這將允許我們在筆記本中運行 Kotlin 程式碼。
RUN pip install --user \ kotlin-jupyter-kernel==0.12.0.322
我們建立一個目錄來儲存筆記本。
RUN mkdir -p /home/jovyan/notebooks
最後,我們建立NOTEBOOK_ARGS環境變量,允許我們使用所需的選項配置筆記本,在這種情況下,我們不希望瀏覽器自動打開,我們希望筆記本目錄為/home/jovyan/筆記本
ENV NOTEBOOK_ARGS="--no-browser --notebook-dir=/home/jovyan/notebooks"
要建立 Docker 映像,我們運行:
docker build --target kotlin-kernel -t kotlin-kernel .
此命令建置 Docker 映像並將其標記為 kotlin-kernel。
運行容器:
docker run \ -it \ -p 8888:8888 \ -v $(pwd)/notebooks:/home/jovyan/notebooks \ kotlin-kernel
此指令:
- 以互動模式運作容器 (-it)。
- 將容器的連接埠 8888 對應到主機的連接埠 8888 (-p 8888:8888)。
- 將本機notebooks目錄掛載到容器的:/home/jovyan/notebooks目錄中(-v $(pwd)/notebooks::/home/jovyan/notebooks)。
執行後,您將能夠在瀏覽器中存取 JupyterLab,並且您將看到 Launcher 已經有兩個可用核心:Python 和 Kotlin。
事實上,我們現在可以使用 Kotlin 來建立筆記本!
互動的下一步
在深入了解 Kotlin 的過程中,我注意到它與 Python 有一些有趣的相似之處。這讓我想要更詳細地視覺化這些相似之處,從而在兩種語言之間進行直接比較。我想知道是否可以在同一個筆記本上運行 Python 和 Kotlin 程式碼,事實證明這是可能的。
我發現了一個名為 SoS(腳本的腳本)的擴充(和 Jupyter 核心),它允許此功能。我決定將它與 Kotlin 核心一起添加到我的容器中。以下是 Dockerfile 的新增內容:
Dockerfile 更新
我們安裝 SoS,這將允許我們在同一個筆記本中運行 Python 和 Kotlin 程式碼。
FROM quay.io/jupyter/base-notebook:2024-12-31 AS kotlin-kernel
透過這些添加,我們現在可以建造並運行改進的容器:
USER root RUN apt-get update && apt-get -y install openjdk-21-jdk USER jovyan
現在造訪 JupyterLab 時,您將看到三個可用核心:Python、Kotlin 和 SoS。
現在我們可以在同一個筆記本中運行 Python 和 Kotlin 程式碼:
額外客製化
為了改善視覺體驗並輕鬆區分不同語言的單元格,我決定自訂單元格的外觀。
Jupyter Notebook 可讓您新增自訂 CSS,這使我們可以根據語言在每個單元格的左側添加漸層。
這是我使用的CSS:
RUN pip install --user \ kotlin-jupyter-kernel==0.12.0.322
為了實現此自定義,我將 CSS 保存在名為 custom.css 的檔案中,並將其新增至 Dockerfile:
RUN mkdir -p /home/jovyan/notebooks
此外,需要向 jupyter lab 指令指定我們要使用此自訂 CSS,並在執行指令中加入 --custom-css 標誌。
ENV NOTEBOOK_ARGS="--no-browser --notebook-dir=/home/jovyan/notebooks"
錯誤以及如何隱藏它們
在使用多語言核心的過程中,執行Kotlin單元時偶爾會出現錯誤。這個錯誤是隨機顯示的,雖然我還無法確定其根源或如何最終解決它,但我已經找到了一個臨時解決方案來改善用戶體驗。
為了隱藏這個惱人的錯誤,我決定使用 CSS。我將以下行加入上面提到的 custom.css 檔案:
FROM quay.io/jupyter/base-notebook:2024-12-31 AS kotlin-kernel
這行 CSS 隱藏了筆記本中 Kotlin 特定的錯誤訊息。儘管它不是一個理想的解決方案,因為它可能隱藏重要的錯誤,但它顯著改善了使用 Kotlin 筆記本時的視覺體驗,特別是在處理這種重複出現且看似無害的錯誤時。
結論
在這篇文章中,我們探討如何使用 Jupyter Notebooks 為 Kotlin 建立互動式開發環境。
我們從支援 Kotlin 的 Docker 容器的基本設定開始,然後轉向更複雜的環境,允許在同一筆記本中以多種語言執行程式碼。
此外,我們還了解如何自訂筆記本的外觀以提高視覺體驗和可讀性,以及如何「隱藏」使用這些筆記本時可能出現的一些常見錯誤。
這不僅使學習 Kotlin 變得更加容易,而且還可以與 Python 等其他語言進行直接比較,這對於正在過渡到 Kotlin 或經常使用多種程式語言的開發人員來說非常有用
。其他資源
對於有興趣進一步探索或複製此環境的人,我已在我的 GitHub 儲存庫中提供了此專案中使用的所有程式碼。
我希望本指南對您的 Kotlin 和 Jupyter 學習之旅有所幫助。
以上是使用 Jupyter 和 Kotlin 建立筆記本的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。
