「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java 用 Jupyter ノートブック

Java 用 Jupyter ノートブック

2024 年 11 月 6 日に公開
ブラウズ:287

Jupyter Notebook の強力な点

Jupyter Notebook は、もともとデータ サイエンティストやエンジニアが Python プログラミング言語を使用してデータの操作を簡素化できるように開発された優れたツールです。実際、ノートブックはインタラクティブな性質を備えているため、開発環境、コンパイル、パッケージ化などをセットアップせずに、コードの結果をすぐに確認するのに最適です。この機能は、開発スキルがデータ操作の専門知識よりも重要視されていたデータ サイエンス、機械学習、統計モデリングでの採用において非常に重要でした。

利点

以下は Jupyter Notebook の利点の一部です

  1. インタラクティブな開発: ノートブックを使用すると、開発者はコードを小さなチャンクに分けて記述し、すぐにテストして、結果を視覚化できます。このインタラクティブなワークフローは、反復とデバッグの高速化を促進し、データ探索、アルゴリズム開発、迅速なプロトタイピングに最適です。
  2. リッチなビジュアライゼーション: 通常、Notebook は、プロット、グラフ、その他のビジュアル出力をインラインで表示できる強力なビジュアライゼーション ライブラリと統合されています。
  3. ドキュメントとコードの統合: ノートブックは実行可能コードとマークダウン セルを組み合わせて、開発者がコードを文書化したり、ロジックを説明したりできるようにして、より読みやすく保守しやすいコードベースを作成します。
  4. コラボレーション: ノートブックを共有することで、チーム メンバーは開発環境をセットアップせずにコードをレビューして実行できるため、特に技術以外の関係者が関与する部門横断的なチームでのコラボレーションが容易になります。
  5. 再現性: ノートブックは上から下まで再実行できるため、分析やテストを一貫して再現できます。これは、デバッグ、テスト、結果の表示にとって非常に重要です。

要約すると、次のように言えます

Jupyter ノートブックは、初期の調査から本番環境に対応したコードに至るまで、開発プロセスを合理化し、柔軟性とリアルタイムのフィードバックを提供します。

Python の壁を打ち破る

Jupyter ノートブックが提供する利点を考慮すると、ソフトウェア開発者がこのようなノートブックのアプローチを使用して、たとえばプロジェクトの ユース ケース テスト を開発したり、役立つ インタラクティブなハウツー[ を提供したりするのは素晴らしいことです。 &&&]。

ここでの質問は次のとおりです:

Python 以外のプログラミング言語に Jupyter Notebook を使用することはできますか?

答えは

YES?.

ジュピターのアーキテクチャ

Jupyter ツールは、

カーネル コンセプトを通じて複数のプログラミング言語をサポートするように設計されています。以下の図を参照してください。

Jupyter Notebook for Java

カーネルは、Jupyter ノートブック サーバーがノートブック ドキュメント (.ipynb) 内でユーザーによって記述されたコードのブロックを評価する方法であるため、選択したプログラミング言語のコードを評価できるカーネルがあれば十分です。 Jupyter Notebook でサポートされています。

もちろん、Jupyter カーネルがサポートできる潜在的なプログラミング言語はすべて Read-eval-print Loop (REPL) 機能をサポートする必要があることは簡単に推測できます。

質問は次のようになります:

Python ONE 以外の Jupyter カーネルはありますか?

答えは

はい?です。

最近、私は Langgraph4J に取り組んでいます。これは、Langchain によるエージェントおよびマルチエージェント ワークフローの作成に使用される Javascript ライブラリである、より有名な Langgraph.js の Java 実装です。興味深い点は、[Langchain.js] が DENO Jupiter Kernel を利用した Javascript Jupyter ノートブックを使用して How-To を実装および文書化していることです。

そこで、同じアプローチを Java でどのように使用する (またはシミュレートする) かというジレンマに直面しました。そして、JDK 9 バージョンからはJava の REPL を有効にする JShell。

Java Jupyter カーネル

少し調べた後 (そして、DIY 実装に挑戦してみようという奇妙な考えも)、Java をサポートする Jupyter カーネルである rapaio-jupyter-kernel にたどり着きました。プロジェクトには次のように記載されています:

JShell に基づく Java 言語用の Jupyter カーネル。 Jupyter メッセージ仕様バージョン 5.4 を実装しており、Java = 22.

が必要です。

それは素晴らしいです。使い始めて、すごい!?。その機能のいくつかを見てみましょう。以下に最も代表的なものをまとめました:

Java Jupyter ノートブックの機能


通常の Java を書くことができます。

var 結果 = 2 2; 結果
var result = 2   2;
result
4

// クラスを含む レコード Complex(double a, double b) { public Complex add(Complex c) { return new Complex(a c.a, b c.b); } } 複素数 x = 新しい複素数(10,20); x.add(new Complex(1,1))
var result = 2   2;
result
複雑[a=11.0, b=21.0]

// メソッドも実装可能 int add(int a, int b) { b を返します。 } 追加(2,3)
var result = 2   2;
result
5

魔法のコマンド

Java コードのほかに、セルにはカーネルによって実装される特別なコマンドを含めることができます。これをマジックコードといい、マジックラインとマジックセルの2種類があります。


マジックラインは、先頭に%が付いている行です。プレフィックスの後には、マジック コマンドとオプションのパラメータが続きます。以下はマジックラインの例です:

// この時点でこのノートブックに定義されている型をリストするよう JShell に要求するマジックライン %jshell /types
var result = 2   2;
result
| レコードコンプレックス

マジックコマンド補間

場合によっては、より動的な方法でマジック コマンドを実行する必要があることがあります。これは魔法の補間を使用して行うことができます。

マジック補間は、\{ で始まり } で終わるマークされたコンテンツの補間です。これらのマーカーで装飾されたコンテンツはすべて jshell で評価され、その結果が文字列に変換され、マジック コマンドの装飾されたコンテンツが置き換えられます。

文字列バージョン = "1.0.2";
var result = 2   2;
result

�pendency /add com.github.javafaker:javafaker:\{version}
var result = 2   2;
result
依存関係の追加 com.github.javafaker:javafaker:1.0.2

依存関係の管理 ?

「pendency /add」を使用して依存関係を追加でき、すべての依存関係を追加した後、「pendency /resolve

」を呼び出すことができます。

�pendency /add com.github.javafaker:javafaker:1.0.2 �保留/解決
var result = 2   2;
result
依存関係の追加 com.github.javafaker:javafaker:1.0.2

依存関係の解決
解決されたアーティファクト数: 5
クラスパスに追加: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/com/github/javafaker/javafaker/1.0.2/javafaker-1.0.2.jar
クラスパスに追加: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar
クラスパスに追加: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/org/yaml/snakeyaml/1.23/snakeyaml-1.23-android.jar
クラスパスに追加: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/com/github/mifmif/generex/1.0.2/generex-1.0.2.jar
クラスパスに追加: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/dk/brics/auTomaton/auTomaton/1.11-8/auTomaton-1.11-8.jar

追加すると、依存関係をインポートして使用できます。

com.github.javafaker.Faker をインポートします。 var fader = 新しい Faker(); faker.name().fullName()
var result = 2   2;
result
ヘイリー・アンダーソン

競合する依存関係の解決

競合がある場合は、オプションで管理できます。競合がある例を見てみましょう:

�pendency /add com.google.guava:guava:20.0 --optional �pendency /add com.google.inject:guice:4.2.2 �pendency /add com.google.guava:guava:25.1-android �保留/解決
リリースステートメント この記事は次の場所に転載されています: https://dev.to/bsorrentino/jupyter-notebook-for-java-3cej?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3