Pull to refresh

Comments 13

UFO just landed and posted this here
eula
там все описано. Впрочем все тоже самое относится и к яве.
Вроде и есть куча JVM, но писать на чем либо кроме Oracle значит стрелять себе в ногу
UFO just landed and posted this here
При этом язык Java сильнее завязан на open source (по сравнению, например, с C#...

Большинство проектов .NET Foundation распространяются по лицензией MIT/X11/BSD, вообще эти лицензии очень распространены в .NET мире.

оооочень долгое введение, а потом сразу статья закончилась :-(
хотелось прочитать хотя бы про общую схему как вы туда java прикрутили

Общая схема стара как мир — часть Rust-интерфейсов вынесена в C-API, которое цепляет Java через JNI. Для этого есть замечательная библиотека jni-rs (кстати сказать, недавно она перешла под крыло разработчиков Exonum Java Binding). Все, что нужно Java-сервису (мы так называем смарт-контракты) со стороны блокчейн-библиотеки — линкуется в виде динамической Rust-библиотеки.
Для запуска всего этого есть отдельное небольшое приложение EJB App — оно стартует JVM, линкуется со всеми необходимыми библиотеками и заодно настраивает ноду Exonum.
Общая схема получается такая (не умею рисовать, не бейте камнями):
image

Интересно, а с точки зрения производительности JVM версия сильно потеряла?

К сожалению, полноразмерных бенчмарков пока что не проводилось (но они без сомнения будут). Пока что можно сказать что да, теряем производительность, возможно очень серьезно. Впрочем, еще есть много простора для различных оптимизаций, и даже при некоторых потерях производительности Exonum все равно остается одним из самых производительных на рынке.

Как мне кажется, Java не намного проще Rust, если вообще проще :)

Какие критерии рассматривали, когда выбирали язык для написания? Вы указали "безопасность работы с памятью, скорость, гонки", но наверное есть еще? Наличие разработчиков? Предыдущие наработки? Жесткое/мягкое время?
Рассматривалась ли, например, Scala? Язык во многом похож на Rust:


  • компилируемый (в байт-код JVM)
  • такая же типобезопасность,
  • статическая типизация с генериками
  • безопасная работа с памятью
  • аналогичные Option, Result, match.

Плюс функциональный язык, что так же помогает писать надежный код в ситуациях гонок.
При этом Scala хорошо принимается в финансовом мире, ее активно используют в банках. JVM — стандарт де-факто.


Вот пишут, что Waves сделали блокчейн на Scala всего в ~20К строк (в коде bitcoin примерно 100К строк).
Если не секрет, сколько у вас получилось строк?

el777 Критерии выбора Java в статье достаточно раскрыты, и вы все правильно подметили в своем комментарии.
Почему первым языком был выбран Java, а не Scala — число разработчиков, широко используемая экосистема, большое количество legacy проектов на Java. Потенциально Scala тоже хороший вариант.

Про количество строк не секрет. В ядре Exonum сейчас около 80К сейчас, включая тесты, дело, тесткит и стандартные сервисы. А в Java Binding 9K — это Java код и XML.
AR1ES сейчас в приоритете Java и Rust. В будущем, возможно, и добавим поддержку .NET, C++, но это только в далеких планах :)
Sign up to leave a comment.