Devdays Осень 2017/jupyter kernel — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
 
(не показана 21 промежуточная версия 2 участников)
Строка 1: Строка 1:
 
== Описание ==
 
== Описание ==
Jupyter kernel for java lang
+
Работающий Jupyter kernel for java lang
  
Технологии: python, jshell
+
Технологии: Python, Java
 
+
== Состав команды ==
+
*  Антон Егоров
+
* Зубаков Алексей
+
*  Калинин Владислав
+
  
 
[https://github.com/aleksZubakov/java-jupyter-kernel Ссылка на репозиторий]
 
[https://github.com/aleksZubakov/java-jupyter-kernel Ссылка на репозиторий]
 +
 +
[https://youtu.be/aD98dOELlKU Видео]
 +
 +
[https://drive.google.com/open?id=1He_d6cpaVcsnFKu3QlkPUR-4BQF5jk9n Презентация]
 +
 +
== Состав команды ==
 +
*  Антон Егоров — автоматическая сборка и установка, история команд /history.
 +
* Зубаков Алексей — руководитель проекта, Java составляющая ядра(обертка JShell на Java).
 +
*  Калинин Владислав — Java и Python составляющие ядра(Kernel на Python, java2py bridge, вывод переменных/методов: /vars, /methods).
  
 
== Features ==
 
== Features ==
- Исполнение java кода
+
* Исполнение java кода
- История команд
+
* История команд
- autocomplete(по возможности)
+
* autocomplete(по возможности)
 +
 
 +
 
 +
== Функциональность ==
 +
* Запланировано и сделано:
 +
    * минимальный рабочий java kernel для jupyter без дополнительных фичей
 +
    * фичи jshell внутри jupyter notebookl (/vars, /methods, etc.)
 +
    * автоматическая установка и сборка
 +
    * вывод ошибок
 +
    * автокомплит   
 +
 
 +
* Запланировано и не сделано:
 +
    * связь с jshell напрямую из python
 +
 
 +
* Не запланировани и сделано:
 +
    * установка связи с jshell через java classes
 +
    * простейший парсинг java сниппетов
 +
   
 +
 
 +
== Как запустить==
 +
Инструкция есть в [https://github.com/aleksZubakov/java-jupyter-kernel репозитории]
 +
 
 +
 
 +
В вашей системе уже должен быть установлен Jupyter и JDK 9.
 +
 
 +
Запустите установочный скрипт
 +
 
 +
<code>sudo ./setup.py install</code>
 +
 
 +
Лучше дать ему привилегии. Скрипт попытается вызвать команду <code>jupyter kernelspec list</code>, и если хоть одно ядро уже подключено к Jupyter-у, то скрипт узнает путь, куда нужно скопировать необходимые для запуска Java-ядра файлы. Если это сделать не получится, то будет предложено вручную ввести путь к папке, в которой Jupyter узнаёт информацию о ядрах. Например, это может быть путь <em>/usr/local/share/jupyter/kernels</em>. Также скрипт должен проверить наличие и при необходимости установить библиотеку py4j для Python. Если установка прошла успешно, то запустить Jupyter с Java-ядром можно командой
 +
 
 +
<code>jupyter console --kernel java</code>
 +
 
 +
 
 +
В числе файлов в репозитории есть файл <em>java_src/target/jserver.jar</em>, включающий в себя Java-составляющую ядра. Пересобрать его, при необходимости, можно выполнив команду
 +
 
 +
<code>mvn clean install</code>
 +
 
 +
в папке java_src.
  
 
== Buglist ==
 
== Buglist ==
1) Не работает ptintln(принтит в консоль сервера)
+
* Не ругается на ошибку вида System.out.println(10
2) Некорректный вывод ошибок
+
* Не ругается на незакрытый многострочный комментарий /*
3) При исполнении, например 10; ошибка
+
* Графики выводятся не в самом ноутбуке, а в отдельном окне
Error :
+
* Автокомплит не работает внутри вложенных конструкций
unreachable statement, быть не олжнод
+
* Не всегда корректно подсвечивается синтаксис java в браузере
 +
* Не убивается процесс с java при экстренном завершении

Текущая версия на 14:29, 7 ноября 2017

Описание

Работающий Jupyter kernel for java lang

Технологии: Python, Java

Ссылка на репозиторий

Видео

Презентация

Состав команды

  • Антон Егоров — автоматическая сборка и установка, история команд /history.
  • Зубаков Алексей — руководитель проекта, Java составляющая ядра(обертка JShell на Java).
  • Калинин Владислав — Java и Python составляющие ядра(Kernel на Python, java2py bridge, вывод переменных/методов: /vars, /methods).

Features

  • Исполнение java кода
  • История команд
  • autocomplete(по возможности)


Функциональность

  • Запланировано и сделано:
   * минимальный рабочий java kernel для jupyter без дополнительных фичей
   * фичи jshell внутри jupyter notebookl (/vars, /methods, etc.)
   * автоматическая установка и сборка
   * вывод ошибок
   * автокомплит    
  • Запланировано и не сделано:
   * связь с jshell напрямую из python
  • Не запланировани и сделано:
   * установка связи с jshell через java classes
   * простейший парсинг java сниппетов
   

Как запустить

Инструкция есть в репозитории


В вашей системе уже должен быть установлен Jupyter и JDK 9.

Запустите установочный скрипт

sudo ./setup.py install

Лучше дать ему привилегии. Скрипт попытается вызвать команду jupyter kernelspec list, и если хоть одно ядро уже подключено к Jupyter-у, то скрипт узнает путь, куда нужно скопировать необходимые для запуска Java-ядра файлы. Если это сделать не получится, то будет предложено вручную ввести путь к папке, в которой Jupyter узнаёт информацию о ядрах. Например, это может быть путь /usr/local/share/jupyter/kernels. Также скрипт должен проверить наличие и при необходимости установить библиотеку py4j для Python. Если установка прошла успешно, то запустить Jupyter с Java-ядром можно командой

jupyter console --kernel java


В числе файлов в репозитории есть файл java_src/target/jserver.jar, включающий в себя Java-составляющую ядра. Пересобрать его, при необходимости, можно выполнив команду

mvn clean install

в папке java_src.

Buglist

  • Не ругается на ошибку вида System.out.println(10
  • Не ругается на незакрытый многострочный комментарий /*
  • Графики выводятся не в самом ноутбуке, а в отдельном окне
  • Автокомплит не работает внутри вложенных конструкций
  • Не всегда корректно подсвечивается синтаксис java в браузере
  • Не убивается процесс с java при экстренном завершении