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

Java 用 Jupyter ノートブック

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

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] に連絡して削除してください。
最新のチュートリアル もっと>
  • Webスクレイピング - 面白いですね!
    Webスクレイピング - 面白いですね!
    クールな用語: CRON = 指定された間隔でタスクを自動的にスケジュールするプログラミング技術 ウェブって何? プロジェクトなどを調査するとき、私たちは通常、日記、エクセル、ドキュメントなど、さまざまなサイトから情報を書き込みます。 私たちはウェブをスクレイピングし、手動でデータ...
    プログラミング 2024 年 11 月 6 日に公開
  • お客様の声グリッドセクション
    お客様の声グリッドセクション
    ? CSS グリッドを学習しながら、このお客様の声グリッド セクションの作成が完了しました。 ?グリッドは構造化されたレイアウトの作成に最適です。 ?ライブデモ: https://courageous-chebakia-b55f43.netlify.app/ ? GitHub: https://gi...
    プログラミング 2024 年 11 月 6 日に公開
  • REGISTER_GLOBALS が PHP の主要なセキュリティ リスクとみなされるのはなぜですか?
    REGISTER_GLOBALS が PHP の主要なセキュリティ リスクとみなされるのはなぜですか?
    REGISTER_GLOBALS の危険性REGISTER_GLOBALS は、すべての GET 変数と POST 変数を PHP スクリプト内でグローバル変数として使用できるようにする PHP 設定です。この機能は便利に見えるかもしれませんが、潜在的なセキュリティ脆弱性やコーディング方法のため、使...
    プログラミング 2024 年 11 月 6 日に公開
  • Nodemailer の概要: Node.js での簡単な電子メール送信
    Nodemailer の概要: Node.js での簡単な電子メール送信
    Nodemailer は、メールを送信するための Node.js モジュールです。簡単な概要は次のとおりです: トランスポーター: 電子メールの送信方法を定義します (Gmail、カスタム SMTP など経由)。 const transporter = nodemailer.createTra...
    プログラミング 2024 年 11 月 6 日に公開
  • JavaScript での簡単なエラー処理: 安全な代入演算子がコードを簡素化する方法
    JavaScript での簡単なエラー処理: 安全な代入演算子がコードを簡素化する方法
    JavaScript でのエラー処理は面倒になる場合があります。 try/catch ステートメントで大きなコード ブロックをラップすることは機能しますが、プロジェクトが成長するにつれて、デバッグは悪夢のようになります。幸いなことに、もっと良い方法があります。 安全な代入演算子 (?=) を入力しま...
    プログラミング 2024 年 11 月 6 日に公開
  • Javascript は難しい (ESadness あり)
    Javascript は難しい (ESadness あり)
    長文になりますが、もう一度言わせてください。 JAVASCRIPTは難しいです。最後に会ったとき、私は Javascript の世界に足を踏み入れていました。目を輝かせ、希望に満ちたプログラマーが野生のジャングルに足を踏み入れ、「これはどれほど難しいことでしょう?」と言いました。私はどれほど間違っ...
    プログラミング 2024 年 11 月 6 日に公開
  • ## JavaScript を使用せずに CSS で円グラフのセグメントを作成できますか?
    ## JavaScript を使用せずに CSS で円グラフのセグメントを作成できますか?
    CSS を使用した円のセグメントborder-radius を使用して CSS で円を作成するのが一般的です。しかし、円グラフに似たセグメントを使用しても同様の効果を達成できるでしょうか?この記事では、JavaScript の使用を除き、HTML と CSS だけでこれを実現する方法について詳しく説...
    プログラミング 2024 年 11 月 6 日に公開
  • 小さなベクター ストアをゼロから構築する
    小さなベクター ストアをゼロから構築する
    With the evolving landscape of generative AI, vector databases are playing crucial role in powering generative AI applications. There are so many vect...
    プログラミング 2024 年 11 月 6 日に公開
  • Chrome で AI 実験 API を使用する方法
    Chrome で AI 実験 API を使用する方法
    Chrome で試験運用版 AI API を使用するには、次の手順に従ってください: ハードウェア要件 4GB RAM GPU が利用可能 最低 22GB のスペース Windows 10.11 または macOS Ventura 以降のバージョン (Linux 仕様なし) 次はまだ...
    プログラミング 2024 年 11 月 6 日に公開
  • レビュー: Django DX をブーストする (Adam Johnson 著)
    レビュー: Django DX をブーストする (Adam Johnson 著)
    本のレビューはデリケートです。ネタバレするつもりはありませんが、潜在的な読者に何が期待されるのかを感じてもらいたいと考えています。これは、コンテキストの提供と興味を維持することの間の巧みなバランスです。このレビューでは、あまり多くを明らかにせずに、あなたを誘惑するのに十分なだけの情報を提供することで...
    プログラミング 2024 年 11 月 6 日に公開
  • 配列要素をグループ化し、多次元配列の別の列の値を結合する方法
    配列要素をグループ化し、多次元配列の別の列の値を結合する方法
    配列要素を列ごとにグループ化し、別の列の値を結合する2 つの列を持つネストされた配列を含む配列が与えられた場合、タスクはグループ化することです。特定の列に基づいてサブ配列を作成し、各グループ内の別の列の値を連結して、カンマ区切りのリストを作成します。次の配列の例を考えてみましょう。$array = ...
    プログラミング 2024 年 11 月 6 日に公開
  • 新たに追加された 3 つの例外機能
    新たに追加された 3 つの例外機能
    JDK 7 以降、例外処理は 3 つの新機能 (自動リソース管理、マルチキャッチ、より正確な再スロー) で拡張されました。 マルチキャッチを使用すると、同じ catch 句で複数の例外をキャッチでき、コードの重複を回避できます。 マルチキャッチを使用するには、例外のリストを | で区切って指定しま...
    プログラミング 2024 年 11 月 6 日に公開
  • ES6 コード実行時の「予期しないトークンのエクスポート」エラーを修正する方法?
    ES6 コード実行時の「予期しないトークンのエクスポート」エラーを修正する方法?
    「予期しないトークン エクスポート エラーのトラブルシューティング」プロジェクト内で ES6 コードを実行しようとすると、「予期しないトークン エクスポート」エラーが発生する場合があります。このエラーは、使用されている環境が ES6 モジュールで採用されているエクスポート キーワード構文をサポートし...
    プログラミング 2024 年 11 月 6 日に公開
  • アンインストールしても VSCode 拡張機能がファイル システムから削除されないため、解決策を作成しました。
    アンインストールしても VSCode 拡張機能がファイル システムから削除されないため、解決策を作成しました。
    つまり、これは vscode ベースのエディターの問題です。拡張機能をアンインストールした後でも、拡張機能はファイル システムに残り、時間の経過とともにシステムが停止します。簡単なソリューションを作成しました。この Python スクリプトを実行すると、vscode にインストールされていない拡張機...
    プログラミング 2024 年 11 月 6 日に公開
  • GitHub Actions を介して Web サイトのコンテンツをスケジュールどおりに更新する
    GitHub Actions を介して Web サイトのコンテンツをスケジュールどおりに更新する
    従来の意味でのコンテンツ データベースを必要としない、自立可能なコンテンツ管理システムを構築する私のこれまでの道のりを共有したいと思います。 問題 この Web サイトのコンテンツ (ブログ投稿とブックマーク) は Notion データベースに保存されています: ブックマークのあるデ...
    プログラミング 2024 年 11 月 6 日に公開

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

Copyright© 2022 湘ICP备2022001581号-3