Rumah > Java > javaTutorial > teks badan

Jupyter Notebook untuk Java

WBOY
Lepaskan: 2024-09-11 06:31:33
asal
822 orang telah melayarinya

Kehebatan Jupyter Notebook

Buku Nota Jupyter ialah alat yang sangat baik, pada asalnya dibangunkan untuk membantu saintis data dan jurutera memudahkan kerja mereka dengan data menggunakan bahasa pengaturcaraan python. Malah, sifat interaktif buku nota menjadikannya ideal untuk melihat hasil kod dengan cepat tanpa menyediakan persekitaran pembangunan, penyusunan, pembungkusan dan sebagainya. Ciri ini sangat penting untuk diterima pakai dalam sains data, pembelajaran mesin dan pemodelan statistik yang kemahiran pembangunan kurang penting daripada kepakaran manipulasi data.

Kelebihan

Di bawah ialah beberapa kelebihan buku nota Jupyter

  1. Pembangunan Interaktif: Buku nota membenarkan pembangun menulis kod dalam kepingan kecil, mengujinya serta-merta dan memvisualisasikan hasil. Aliran kerja interaktif ini menggalakkan lelaran dan penyahpepijatan yang lebih pantas, sesuai untuk penerokaan data, pembangunan algoritma dan prototaip pantas.
  2. Penggambaran Kaya: Biasanya, Buku Nota disepadukan dengan pustaka visualisasi yang berkuasa yang boleh memaparkan plot, graf dan output visual lain sebaris.
  3. Dokumentasi dan Kod Bersama: Buku nota menggabungkan kod boleh laku dengan sel markdown, membenarkan pembangun mendokumentasikan kod mereka, menerangkan logik, dsb.., mencipta lebih banyak pangkalan kod yang boleh dibaca dan diselenggara.
  4. Kerjasama: Dengan berkongsi buku nota, ahli pasukan boleh menyemak dan menjalankan kod tanpa menyediakan persekitaran pembangunan, menjadikan kerjasama lebih mudah, terutamanya dalam pasukan merentas fungsi yang melibatkan pihak berkepentingan bukan teknikal.
  5. Kebolehhasilan semula: Buku nota boleh disiarkan semula dari atas ke bawah, memastikan sebarang analisis atau ujian boleh diterbitkan semula secara konsisten. Ini penting untuk nyahpepijat, menguji atau mempersembahkan hasil.

Merumuskan kita boleh mengatakan bahawa

Buku nota Jupyter memperkemas proses pembangunan, daripada penerokaan awal kepada kod sedia pengeluaran, menawarkan kefleksibelan dan maklum balas masa nyata.

Hancurkan penghalang Python

Memandangkan kelebihan yang menawarkan buku nota Jupyter, adalah bagus untuk pembangun perisian menggunakan pendekatan buku nota tersebut untuk membangunkan, contohnya, UJIAN KES GUNA untuk projek atau menyediakan CARA-CARA INTERAKTIF yang berguna.

Persoalannya di sini ialah:

ADAKAH MUNGKIN MENGGUNAKAN BUKU NOTA JUPYTER UNTUK BAHASA PENGATURCARAAN SELAIN PYTHON❓?

Jawapannya YA?.

Seni Bina Musytari

Alat Jupyter telah direka bentuk untuk menyokong berbilang bahasa pengaturcaraan melalui konsep Kernel, lihat rajah di bawah:

Jupyter Notebook for Java

Inti ialah cara pelayan komputer riba Jupyter menilai blok kod yang ditulis oleh pengguna di dalam dokumen buku nota (.ipynb), jadi adalah mencukupi untuk mempunyai kernel yang boleh menilai kod bahasa pengaturcaraan pilihan anda. ia disokong oleh buku nota Jupyter.
Sudah tentu, adalah mudah untuk menyimpulkan bahawa setiap bahasa pengaturcaraan yang berpotensi yang boleh disokong oleh Kernel Jupyter harus menyokong ciri gelung Read–eval–print (REPL).

Soalannya menjadi:

ADAKAH JUPYTER KERNEL SELAIN PYTHON ONE❓?

Jawapannya Ya?.

Kebelakangan ini saya telah mengusahakan Langgraph4J yang merupakan pelaksanaan Java bagi Langgraph.js yang lebih terkenal iaitu perpustakaan Javascript yang digunakan untuk mencipta aliran kerja ejen dan berbilang ejen oleh Langchain. Nota yang menarik ialah [Langchain.js] menggunakan buku nota Jupyter Javascript yang dikuasakan oleh Inti Musytari DENO untuk melaksanakan dan mendokumenkan How-Tos.
Jadi, saya menghadapi dilema tentang cara menggunakan (atau mungkin mensimulasikan) pendekatan yang sama di Jawa dan, tanpa banyak harapan, saya mula mencari Jupyter Kernel yang menyokong Java memandangkan, daripada versi JDK 9, terdapat pengenalan JShell yang mendayakan REPL untuk Java.

Kernel Java Jupyter

Selepas sedikit penyelidikan (dan pemikiran yang aneh untuk cuba memasukkan diri saya ke dalam pelaksanaan DIY) saya mendarat di rapaio-jupyter-kernel yang merupakan Jupyter Kernel yang menyokong Java ?. Projek menyatakan:

Inti Jupyter untuk bahasa Java berdasarkan JShell. Ia melaksanakan spesifikasi mesej Jupyter versi 5.4 dan memerlukan Java = 22.

Sungguh menakjubkan; Saya mula menggunakannya dan WOW!?. Lihat beberapa cirinya, di bawah saya telah meringkaskan ciri yang paling mewakili:

Ciri notebook Java Jupyter


Anda boleh menulis Java biasa.

var result = 2 + 2;
result
Salin selepas log masuk

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))
Salin selepas log masuk

Kompleks[a=11.0, b=21.0]

// methods can also be implemented
int add(int a, int b) { return a+b; }
add(2,3)
Salin selepas log masuk

5

Magic commands

Besides Java code, a cell can contain special commands implemented by the kernel. These are called magic code and there are two types: magic lines and magic cells.
Magic lines are lines which are prefixed with %. After the prefix it is followed by the magic command and the optional parameters. Below is an example of magic line:

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

| record Complex

Magic commands interpolation

Sometimes there is a need to run a magic command in a more dynamic way. This can be done using magic interpolation.
Magic interpolation is the interpolation of marked content which starts with \{ and ends with }. Any content decorated with those markers is evaluated in jshell and the result is transformed in a String which replaces the decorated content in the magic command.

String version = "1.0.2";
Salin selepas log masuk

 

%dependency /add com.github.javafaker:javafaker:\{version}
Salin selepas log masuk

Adding dependency com.github.javafaker:javafaker:1.0.2

Dependency management ?

You can add dependencies using %dependency /add and after adding all dependencies you can call %dependency /resolve

%dependency /add com.github.javafaker:javafaker:1.0.2
%dependency /resolve
Salin selepas log masuk

Adding dependency com.github.javafaker:javafaker:1.0.2
Solving dependencies
Resolved artifacts count: 5
Add to classpath: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/com/github/javafaker/javafaker/1.0.2/javafaker-1.0.2.jar
Add to classpath: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar
Add to classpath: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/org/yaml/snakeyaml/1.23/snakeyaml-1.23-android.jar
Add to classpath: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/com/github/mifmif/generex/1.0.2/generex-1.0.2.jar
Add to classpath: /home/ati/work/rapaio-jupyter-kernel/target/mima_cache/dk/brics/automaton/automaton/1.11-8/automaton-1.11-8.jar

When added you can import and use the dependency.

import com.github.javafaker.Faker;
var faker = new Faker();
faker.name().fullName()
Salin selepas log masuk

Hayley Anderson

Resolving conflict dependencies

You there are conflicts you can manage them with optional. Let's take an example which have conflicts:

%dependency /add com.google.guava:guava:20.0 --optional
%dependency /add com.google.inject:guice:4.2.2
%dependency /add com.google.guava:guava:25.1-android
%dependency /resolve
Salin selepas log masuk

Help on magic commands

The magic %help provides more examples and guidance.

JShell commands

Some JShell commands are implemented. For example you can inspect which variables are defined

%jshell /vars
Salin selepas log masuk

or the types you defined in this session

%jshell /types
Salin selepas log masuk

Execute bash commands

You can execute bash scripting commands. Here we display the java version number.

%%bash
java --version
Salin selepas log masuk

openjdk 22.0.2 2024-07-16
OpenJDK Runtime Environment Corretto-22.0.2.9.1 (build 22.0.2+9-FR)
OpenJDK 64-Bit Server VM Corretto-22.0.2.9.1 (build 22.0.2+9-FR, mixed mode, sharing)

You can even define variables. In fact all the lines below cell magic marker are executed as a bash script.

%%bash
name="John"
echo "Hello $name"
Salin selepas log masuk

Hello John

Show an image for immediate inspection

%image https://www.google.com/logos/doodles/2024/paris-games-sailing-6753651837110529.4-law.gif
Salin selepas log masuk

Jupyter Notebook for Java

Display data

Jupyter notebooks uses outputs to display objects of various types. By default when an object is returned as the result of the last code operation, that result is displayed.
The object which is displayed can be anything. If the object has a display handler registered, than that renderer is used to transform the object into a displayable content. If there is no registered display handler than the object is transformed into a string and that will be displayed.
Previously we used magic commands to display an image. However for BufferedImages there is a registered handler and if you obtain an instance of a BufferedImage it will be displayed properly.

import javax.imageio.*;
display(ImageIO.read(new URL("https://www.google.com/logos/doodles/2024/paris-games-sailing-6753651837110529.4-law.gif")));
Salin selepas log masuk

Displayed data has a mime type. You can use that to describe how the object should be interpreted. For example we display a markdown snippet and we direct the output interpretation of the snippet through MIME type.

display("text/markdown", "Markdown *test* **snippet**:\n* bullet 1\n* bullet 2")
Salin selepas log masuk

Markdown test snippet:

  • bullet 1
  • bullet 2

display command returns an id which identifies the piece of output from the notebook which handles the display. Notice that we captured the id of the display. This id can be used to update the same display with a different content. For example we can update the content of that display with a html snippet, using the MIME type for interpretation.

String id = display("text/markdown", "Markdown *test* **snippet**:\n* bullet 1\n* bullet 2");
Salin selepas log masuk

 

updateDisplay(id, "text/html", "Html <i>test</i> <b>snippet</b>:<p><ulist><li>bullet 1</li><li>bullet 2</li></ulist></p>")
Salin selepas log masuk

A Java object is displayed as a String using Objects.toString. As such, if the object has an implementation of toString, that method will be called.

new Complex(10,Math.PI);
Salin selepas log masuk

Complex[a=10.0, b=3.141592653589793]


結論

Jupyter Notebook 的多功能性超越了 Python 的範疇,rapaio-jupyter-kernel 等核心的集合成為 Java 開發人員開闢了新天地。我最喜歡的功能是可以互動式地編寫操作方法,在上下文中記錄它們,但是有很多潛在的用例,這取決於您來探索它們,所以讓我們探索一下並讓我知道。

希望這些知識對您有幫助,同時享受編碼的樂趣! ? 

?我的 Java 筆電實驗在 Github 上嗎? 


原於 2024 年 9 月 6 日發佈於 https://bsorrentino.github.io。

Atas ialah kandungan terperinci Jupyter Notebook untuk Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan