”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 适用于 Java 的 Jupyter 笔记本

适用于 Java 的 Jupyter 笔记本

发布于2024-11-06
浏览:846

Jupyter Notebook 的强大

Jupyter Notebooks 是一个出色的工具,最初是为了帮助数据科学家和工程师使用 python 编程语言简化数据处理工作而开发的。事实上,笔记本的交互性使其非常适合快速查看代码结果,而无需搭建开发环境、编译、打包等。此功能对于数据科学、机器学习和统计建模的采用至关重要,在这些领域,开发技能不如数据操作专业知识那么重要。

优点

以下是Jupyter笔记本的一些优点

  1. 交互式开发:笔记本允许开发人员以小块的形式编写代码,立即测试它们并可视化结果。这种交互式工作流程可促进更快的迭代和调试,非常适合数据探索、算法开发和快速原型设计。
  2. 丰富的可视化:通常,Notebook 与强大的可视化库集成,可以内联显示绘图、图表和其他可视化输出。
  3. 文档和代码在一起:笔记本将可执行代码与 Markdown 单元相结合,允许开发人员记录其代码、解释逻辑等......,创建更具可读性和可维护性的代码库。
  4. 协作:通过共享笔记本,团队成员可以在不设置开发环境的情况下查看和运行代码,使协作变得更加容易,尤其是在涉及非技术利益相关者的跨职能团队中。
  5. 再现性:笔记本可以从上到下重新运行,确保任何分析或测试都可以一致地再现。这对于调试、测试或呈现结果至关重要。

总结一下我们可以说

Jupyter 笔记本简化了从初始探索到生产就绪代码的开发过程,提供了灵活性和实时反馈。

打破Python障碍

考虑到 Jupyter 笔记本提供的优势,对于软件开发人员来说,使用此类笔记本方法进行开发将非常有用,例如,项目用例测试或提供有用的交互式操作指南

这里的问题是:

是否可以使用 JUPYTER Notebook 进行除 PYTHON 以外的编程语言❓?

答案是?.

木星架构

Jupyter 工具的架构旨在通过 Kernel 概念支持多种编程语言,请参见下图:

Jupyter Notebook for Java

内核是 Jupyter 笔记本服务器评估用户在笔记本文档 (.ipynb) 内编写的代码块的方式,因此拥有一个可以评估您选择的编程语言的代码的内核就足够了Jupyter笔记本支持它。
当然,很容易推断出 Jupyter 内核可以支持的每种潜在编程语言都应该支持读取-评估-打印循环 (REPL) 功能。

问题变成:

除了 PYTHON ONE 之外还有 JUPYTER 内核吗❓?

答案是

最近我一直在研究 Langgraph4J,它是更著名的 Langgraph.js 的 Java 实现,Langgraph.js 是一个 Javascript 库,用于由 Langchain 创建代理和多代理工作流程。有趣的是,[Langchain.js] 使用由 DENO Jupiter 内核支持的 Javascript Jupyter 笔记本来实现和记录 How-Tos。
因此,我面临着如何在 Java 中使用(或可能模拟)相同方法的困境,并且没有太多希望,我开始寻找支持 Java 的 Jupyter 内核,因为从 JDK 9 版本开始,引入了为 Java 启用 REPL 的 JShell。

Java Jupyter 内核

经过一番研究(以及尝试将自己投入 DIY 实现的奇怪想法),我找到了 rapaio-jupyter-kernel,它是一个支持 Java 的 Jupyter 内核。该项目指出:

基于 JShell 的 Java 语言 Jupyter 内核。它实现了 Jupyter 消息规范版本 5.4,并且需要 Java = 22。

太神奇了;我开始使用它,哇!?。看看它的一些特点,下面我总结了最具代表性的几个:

Java Jupyter 笔记本功能


你可以编写普通的Java。

var result = 2   2;
result

4

// including classes
record Complex(double a, double b) {
    public Complex add(Complex c) {
        return new Complex(a c.a, b c.b);
    }
}
Complex x = new Complex(10,20);
x.add(new Complex(1,1))

复数[a=11.0, b=21.0]

// methods can also be implemented
int add(int a, int b) { return a b; }
add(2,3)

5

魔法命令

除了 Java 代码之外,单元还可以包含由内核实现的特殊命令。这些被称为魔法代码,有两种类型:魔法线和魔法细胞。
幻线是以%为前缀的线。前缀之后是魔术命令和可选参数。下面是魔术线的示例:

// magic line which asks JShell to list the types defined in this notebook in this moment
%jshell /types

| 记录复杂

魔法命令插值

有时需要以更动态的方式运行魔法命令。这可以使用魔法插值来完成。
魔法插值是对以\{开头、以}结尾的标记内容进行插值。用这些标记修饰的任何内容都会在 jshell 中进行评估,并将结果转换为字符串,替换 magic 命令中的修饰内容。

String version = "1.0.2";

 

版本声明 本文转载于:https://dev.to/bsorrentino/jupyter-notebook-for-java-3cej?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • ## 您可以在不使用 JavaScript 的情况下使用 CSS 创建饼图分段吗?
    ## 您可以在不使用 JavaScript 的情况下使用 CSS 创建饼图分段吗?
    使用 CSS 在圆中分段使用 border-radius 在 CSS 中创建圆是一种常见的做法。但是,我们可以通过分段(类似于饼图)实现类似的效果吗?本文深入研究了仅通过 HTML 和 CSS 实现此目的的方法,不包括使用 JavaScript。生成相等大小的段相等大小段的一种方法涉及生成以下内容的...
    编程 发布于2024-11-06
  • 从头开始构建一个小型矢量存储
    从头开始构建一个小型矢量存储
    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-06
  • 如何在Chrome中使用AI实验API
    如何在Chrome中使用AI实验API
    要在 Chrome 中使用实验性 AI API,请按照以下步骤操作: 硬件要求 4GB 内存 GPU可用 至少 22GB 空间 Windows 10.11 或 macOS Ventura 或更新版本(无 Linux 规范) 尚不支持: Chrome操作系统 Chrome iOS Ch...
    编程 发布于2024-11-06
  • 评论:Adam Johnson 的《Boost Your Django DX》
    评论:Adam Johnson 的《Boost Your Django DX》
    书评很微妙。您不想破坏它,但您也想让潜在读者体验一下所期待的内容。这是提供背景和保持兴趣之间的巧妙平衡。我试图在这篇评论中达到这种平衡,为您提供足够的内容来吸引您,而不透露太多。 一个小背景故事:我第一次从 Djangonaut Space 的好朋友 Tim 那里听说这本书,并将其添加到我的阅读列表...
    编程 发布于2024-11-06
  • 如何对数组元素进行分组并组合多维数组中另一列的值?
    如何对数组元素进行分组并组合多维数组中另一列的值?
    按列对数组元素进行分组并组合另一列中的值给定一个包含两列嵌套数组的数组,任务是将基于特定列的子数组,并将每个组中另一列的值连接起来,生成一个以逗号分隔的列表。考虑以下示例数组:$array = [ ["444", "0081"], ["...
    编程 发布于2024-11-06
  • 三个新添加的例外功能
    三个新添加的例外功能
    从 JDK 7 开始,异常处理已扩展为三个新功能:自动资源管理、多重捕获和更准确的重新抛出。 多重catch允许您使用同一个catch子句捕获多个异常,避免代码重复。 要使用多重捕获,请指定由 | 分隔的异常列表。在 catch 子句中。每个参数都是隐式最终参数。 用法示例:catch(final...
    编程 发布于2024-11-06
  • 如何修复运行 ES6 代码时出现“意外的令牌导出”错误?
    如何修复运行 ES6 代码时出现“意外的令牌导出”错误?
    “排除意外的令牌导出错误”尝试在项目中执行 ES6 代码时,可能会出现“意外的令牌导出”错误。此错误表明所使用的环境不支持 ES6 模块中使用的导出关键字语法。错误详细信息以下代码片段举例说明了错误的来源: export class MyClass { constructor() { c...
    编程 发布于2024-11-06
  • 即使卸载后,VSCode 扩展也不会从文件系统中删除,我创建了一个解决方案!
    即使卸载后,VSCode 扩展也不会从文件系统中删除,我创建了一个解决方案!
    所以这是基于 vscode 的编辑器的问题。即使您卸载了扩展程序,它也会保留在文件系统中,并随着时间的推移堵塞您的系统。我创建了一个简单的解决方案。运行此 python 脚本将删除 vscode 上未安装的扩展。 它适用于 VS Code、VS Code Insiders,也适用于 VSCodiu...
    编程 发布于2024-11-06
  • 通过 GitHub Actions 按计划更新网站内容
    通过 GitHub Actions 按计划更新网站内容
    我想分享我构建一个自我可持续的内容管理系统的旅程,该系统不需要传统意义上的内容数据库。 问题 该网站的内容(博客文章和书签)存储在 Notion 数据库中: 带书签的数据库 –  Notion UI 我试图解决的问题是不必在添加每个书签后手动部署网站。最重要的是 - 保持托管尽可能便...
    编程 发布于2024-11-06
  • 如何在 Laravel 5 应用程序的共享托管环境中清除缓存?
    如何在 Laravel 5 应用程序的共享托管环境中清除缓存?
    如何从 Laravel 5 中的共享托管服务器清除缓存清除缓存对于维护 Laravel 应用程序的性能和效率至关重要。但是,在您可能无法访问 CLI 的共享托管环境中,清除缓存可能是一个挑战。清除视图缓存的解决方法在这种情况下,您可以通过在 CLI 之外调用 Artisan 命令来解决此问题。要清除...
    编程 发布于2024-11-06
  • 如何加速 Matplotlib 绘图以提高性能?
    如何加速 Matplotlib 绘图以提高性能?
    为什么 Matplotlib 这么慢?在评估 Python 绘图库时,考虑性能很重要。 Matplotlib 是一个广泛使用的库,它看起来可能很缓慢,引发了关于加快速度或探索替代选项的问题。让我们深入研究这个问题并探索可能的解决方案。提供的示例展示了具有多个子图和数据更新的图。使用 Matplotl...
    编程 发布于2024-11-06
  • 使用画布调整图像大小时如何克服锯齿状边缘和模糊结果?
    使用画布调整图像大小时如何克服锯齿状边缘和模糊结果?
    解决在 JavaScript 中使用 Canvas 调整图像大小时的平滑问题在 JavaScript 中使用 Canvas 调整图像大小有时会导致明显的锯齿状边缘或模糊。为了实现平滑的调整大小,可以采用一种称为向下步进的技术。在大多数浏览器中,默认情况下使用线性插值来调整大小。双三次插值可产生更平滑...
    编程 发布于2024-11-06
  • 如何解决 MySQL C# 中的文本编码问题?
    如何解决 MySQL C# 中的文本编码问题?
    修复 MySQL C# 中的文本编码问题使用实体框架在 C# 中处理 MySQL 数据库时,用户可能会遇到文本编码问题,特别是带有特殊字符,例如“ë”,渲染不正确。本文探讨了解决此常见问题的最合适的解决方案。要纠正编码问题,必须执行以下操作:验证排序规则设置: 确保所涉及的数据库或表的排序规则与 U...
    编程 发布于2024-11-06
  • 如何将美丽搜索与 Node.js 集成
    如何将美丽搜索与 Node.js 集成
    作为 Node.js 开发人员,构建能够提供快速且准确的搜索结果的应用程序非常重要。用户期望立即得到相关的响应,但实现起来可能具有挑战性,特别是在处理大型数据集时。 这就是美丽搜索的用武之地——一个为轻松满足这些需求而构建的搜索引擎。 什么是美丽搜索? Meilisearch 是一个...
    编程 发布于2024-11-06
  • 并行 JavaScript 机
    并行 JavaScript 机
    作者:Vladas Saulis,PE Prodata,克莱佩达,立陶宛 2024 年 5 月 18 日 抽象的 本文提出了一种新的编程模型,可以以简单且自动平衡的方式利用多核 CPU 系统。该模型还提出了一种更简单的编程范例,用于在大多数大规模并行计算领域(例如天气预报、核物理、搜索引擎等)开发并...
    编程 发布于2024-11-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3