Jupyter Notebooks são uma excelente ferramenta, originalmente desenvolvida para ajudar cientistas e engenheiros de dados a simplificar seu trabalho com dados usando a linguagem de programação python. Na verdade, a natureza interativa dos notebooks os torna ideais para ver rapidamente os resultados do código sem configurar um ambiente de desenvolvimento, compilação, empacotamento e assim por diante. Esse recurso foi crucial para adoção em ciência de dados, aprendizado de máquina e modelagem estatística, onde a habilidade de desenvolvimento era menos essencial do que a experiência em manipulação de dados.
Abaixo estão algumas das vantagens do notebook Jupyter
Resumindo podemos dizer que
Os notebooks Jupyter simplificam o processo de desenvolvimento, desde a exploração inicial até o código pronto para produção, oferecendo flexibilidade e feedback em tempo real.
Considerando as vantagens que oferecem os notebooks Jupyter, seria ótimo para os desenvolvedores de software usarem essa abordagem de notebook para desenvolver, por exemplo, TESTES DE CASO DE USO para projetos ou fornecer COMO FAZER INTERATIVO.
A questão aqui é:
É POSSÍVEL USAR UM NOTEBOOK JUPYTER PARA LINGUAGEM DE PROGRAMAÇÃO DIFERENTE DE PYTHON❓?
A resposta é SIM?.
As ferramentas Jupyter foram arquitetadas para suportar múltiplas linguagens de programação através do conceito Kernel, veja o diagrama abaixo:
O kernel é como o servidor do notebook Jupyter avalia blocos de código escritos pelo usuário dentro do documento do notebook (.ipynb), então é suficiente ter um kernel que possa avaliar o código da linguagem de programação de sua escolha para ter é compatível com o notebook Jupyter.
Obviamente, é fácil deduzir que toda linguagem de programação potencial que um kernel Jupyter pode suportar deve oferecer suporte ao recurso Read-eval-print loop (REPL).
A questão é:
EXISTEM JUPYTER KERNEL ALÉM DO PYTHON ONE❓?
A resposta é Sim?.
Ultimamente tenho trabalhado no Langgraph4J, que é uma implementação Java do mais famoso Langgraph.js, que é uma biblioteca Javascript usada para criar fluxos de trabalho de agentes e multiagentes por Langchain. Uma observação interessante é que [Langchain.js] usa notebooks Javascript Jupyter alimentados por um DENO Jupiter Kernel para implementar e documentar instruções.
Então, enfrentei um dilema de como usar (ou possivelmente simular) a mesma abordagem em Java e, sem muita esperança, comecei a procurar um Kernel Jupyter que suportasse Java considerando que, a partir da versão JDK 9, houve a introdução do JShell que habilitou o REPL para Java.
Depois de um pouco de pesquisa (e um pensamento estranho de tentar me lançar em uma implementação DIY), cheguei ao rapaio-jupyter-kernel, que é um kernel Jupyter que suporta Java?. O projeto afirma:
Kernel Jupyter para linguagem Java baseada em JShell. Ele implementa a especificação de mensagem Jupyter versão 5.4 e requer Java = 22.
É incrível; Estou começando a usar e UAU!?. Dê uma olhada em algumas de suas características, abaixo resumi as mais representativas:
Você pode escrever Java normal.
var result = 2 2; result4
// 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))Complexo[a=11,0, b=21,0]
// methods can also be implemented int add(int a, int b) { return a b; } add(2,3)5
Comandos mágicos
Além do código Java, uma célula pode conter comandos especiais implementados pelo kernel. Eles são chamados de código mágico e existem dois tipos: linhas mágicas e células mágicas.
Linhas mágicas são linhas prefixadas com%. Após o prefixo é seguido pelo comando mágico e pelos parâmetros opcionais. Abaixo está um exemplo de linha mágica:// magic line which asks JShell to list the types defined in this notebook in this moment %jshell /types| gravar Complexo
Interpolação de comandos mágicos
Às vezes é necessário executar um comando mágico de uma forma mais dinâmica. Isso pode ser feito usando interpolação mágica.
A interpolação mágica é a interpolação do conteúdo marcado que começa com \{ e termina com }. Qualquer conteúdo decorado com esses marcadores é avaliado em jshell e o resultado é transformado em uma String que substitui o conteúdo decorado no comando mágico.String version = "1.0.2";
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3