Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 1

0. marmyshev 279 17.10.20 17:10 Сейчас в теме
Введение в разработку плагинов для 1С:EDT. Цель: показать, что плагины для 1С:EDT можно делать быстро и легко.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ktb 363 17.10.20 23:32 Сейчас в теме
2. D_astana 100 18.10.20 09:53 Сейчас в теме
3. TuneSoft 282 18.10.20 16:14 Сейчас в теме
Круто.
Очень длинная статья.
А можно вкратце в комментарии уточнить для чего нужно создавать плагин для EDT?
4. marmyshev 279 18.10.20 17:44 Сейчас в теме
(3) много разных идей - например сделать интеграцию с вашей системой управления, сделать проверки кода, какие-либо инструменты обработки кода/метаданных по правилам.
Смысл в том, что теперь можно сделать очень многое в дополнение у стандартному инструментарию.

Как пример - расширение 1C:Language Tool, или плагин 1C:SSL-support
TuneSoft; +1 Ответить
6. Darklight 22 19.10.20 09:19 Сейчас в теме
(3)Например, чтобы EDT некоторые функции из Снегопата
Вот тут некоторые расширения самого Снегопата

Или Турбоконфа...

А можно сделать и ещё более интересное - например альтернативный редактор Форм или Макетов, свои средства анализа и рефакторинга кода, свой препроцессор, или даже свой компилятор/конвертер кода....

Например, я бы сделал плагин для управления метаданными (и кодом) с анализом "функциональных опций" - чтобы в зависимости от выставленных опций - в ИБ попадали те-или иные куски метаданных и программного кода - в зависимости от установленных опций для этой ИБ. Например, для какой-то ИБ может использоваться некое измерение регистра (целого списка регистров), а для остальных - не использоваться - так вот в остальных это измерение можно сразу исключить из регистра, как и программный код (в т.ч. запросов) его получающий/обрабатывающий/записывающий/отображающий (естественно - всё это должно быть соотвествующим образом помечено).

Или сделать инструмент рефракторнинга кода - который легко позволил бы управлять директивами функции - опции доступности в различных контекстах, вызова на сервере, повторного использования.... переключая её между ними, создавая вспомогательны процедуры в соответствующих модулях...

Или плагин для поиска всех вызовов других функций внутри выбранной функции - с построением полного дерева зависимостей; с последующим рефакторингом - чтобы, например, можно было бы вынести все эти функции в один модуль

Много чего ещё можно придумать! Автору большое спасибо за статью!
8. marmyshev 279 19.10.20 09:55 Сейчас в теме
(6) прикольные идеи! Когда начнёшь что-то делать?))) приходи на канал по разработке плагинов...
9. Darklight 22 19.10.20 12:58 Сейчас в теме
(8)Идей у меня очень много, как и открытых проектов. Но до разработки плагинов ещё не дорос - надеюсь данный цикл статей мне в этом поспособствует.

Но... язык Java мне не нравится - сейчас я изучаю язык Kotlin - если буду писать плагины для Eclipse - то уже на Kotlin

Вот бы ещё тему интеграции с платформой 1С: Предприятие 8 разобрать (от интеграции с агентом 1С-конфигуратора, до написания собственного агента отладчика) - вообще шикардос было бы!
11. user907889 20.10.20 13:33 Сейчас в теме
(9)
Но... язык Java мне не нравится - сейчас я изучаю язык Kotlin - если буду писать плагины для Eclipse - то уже на Kotlin

А чем же вам насолила Java? Я конечно не претендую на открытие истины, но даже сами разработчики Котлин рекомендуют сначала изучать Java Core и прочие банальности, в потом уже учить Котлин...
12. Darklight 22 20.10.20 17:22 Сейчас в теме
(11)"изучать Java Core" против этого пожелания ничего не имею.
Но программировать на Java желания нет - уж больно он кривой какой-то (а примеры на Java я на 90% и так разобрать смогу, а IDEA умеет их конвертировать на лету в Kotlin; а библиотеку JVM разберу уже походу изучения Koltin).

Имею опыт программирования на Delphi, C++ и C# - если C++ конечно куда хуже, чем Java (но это разные области программирования), то C# куда более продуманный язык, чем Java, хотя и Java и C# многое тянут из парадигм С++ - и много из этого давно устарело или попросту мне не нравится! Delphi - уже тоже устарел (а его продолжение - язык Oxigene так и не стал популярным, но многие языки тянут из него разные удачные парадигмы, в т.ч. Kotlin).

Kotlin же более универсальный язык (и это прекрасно) - позволяющий делать многие вещи по-современному, кратко и приятно, почти без того, что мне не нравится во многих ЯП, включая C# и Java.
Да и программировать на нём можно не только под JVM, но и под JS, и под Native (кроcс-платформенный через LLVM), жаль нет поддержки .NET/MONO - ибо эта платформа мощнее, чем JVM. Но, уверен, это тоже со временем будет!
А значит можно изучить один язык - и писать на нём под разные платформы - это же очень продуктивно!

Даже "1С Исполнитель" равняется на Kotlin (или на Oxigene - это как посмотреть), так что парадигмы (стиль) программирования Kotlin явно будут полезны к изучению и для 1С программистов - может таковым станет язык 1С в будущей инкарнации платформы 1С.
А не станет.... ну так поможем этому альтернативным путём (есть у меня тут крутые идеи)!

Я не говорю, что Kotlin - Это идеальный язык. Но, он точно лучше чем Java и полностью с ним совместим!

Ранее мне так же нравился язык Scala - но сейчас уже больше нравится Kotlin (и уже больше, чем C# или Delphi, но платформа .NET Мне всё-таки нравится больше, чем JVM, но вряд ли на много больше...)
14. user907889 20.10.20 19:05 Сейчас в теме
(12) прыгаете от Scala к Kotlin, C# и Delphi, не очень понятно чем именно не нравится Java, но это личное дело каждого, так что дело ваше. Уже десяток лет предрекают смерть Java, но она все еще самый популярный язык. Что касается Котлин, пробовал переписать свой проект на него и сильно застрял, может слишком много синтаксического сахара?
16. Darklight 22 20.10.20 21:11 Сейчас в теме
(14)
но это личное дело каждого

Вот я и не спорю с этим. Но я написал - что считаю Java ужен синтаксическим динозавром. Одно только отсутствие Свойств у классов в Java уже напрягает - не меньше, чем в С++. А в Kotlin наоборот - нет полей, только свойства - ну и это хорошо - архитектура упрощается - не нужно думать, что объявить полем, а что свойством, не нужно заботиться о методах доступа (там где это не нужно), легко объявлять немутабельные свойства. Про технику делегирования свойств в Kotlin так вообще молчу - крутень полная!

Сейчас модно продвигать синергию объектного и функционального подходов к программированию - Java застрял в начале XXI века, а Kotlin лишь немногим уступает Scala и Nemerle в функциональных возможностях в императивном коде. Но лямбды в Котлине замечательны (хотя есть ещё куда расти), как и инструкции-выражения (хотя по тернарному оператору сравнения я всё-таки скучаю, как и про продвинутому паттерн мэтчингу). А вот кортежи и их деконструкция, всё же, намного лучше реализованы в C#, а в Java все ещё хуже чем в Kotlin

Нуллабельные тип в Java завезли (правда синтаксис объявления через дженерик-"Опции" ужасен). А вот нуллабельных экспресс операторов вроде бы до сих пор нет! А в Kotlin можно как с ними, так и без них - если нулабельный тип проверен в условии - то в ветве к нем можно напрямую обращаться без предупреждений; аналогично с проверкой на тип в условии - в теле можно обращаться уже как бы к приведённому типу не выполняя приведения).

Рефлексия Kotlin равняется на C# (который равнялся на Delphi RTTI), а в Java тут всё очень ограничено JVM (впрочем этот JVM ограничивает и Kotlin, в C# и .NET рефлексия и её неявные возможности при использовании библиотек - просто превосходны)!

Работа а аргументами функций в Kotlin тоже очень современная - тут и именованные аргументы и бесконечные списки аргументов - этого нет в Java

В Java один класс - один файл - все собирается в пакеты (орчень неудобно и ограничено). Kotlin ушёл чуть дальше - тут в файле может быть куча классов - файлы далее собираются в пакеты.
В C#, правда, ещё круче - есть пространства имён - вещь превосходная, и сборки, из которых уже собираются библиотеки, которые подключаются к проекту (со всеми зависимостями), но в файлах импортируются пространства имён консолидировано - не нужно заморачиваться с подключенными библиотеками, нужно знать только пространства имён - причём их даже импортировать не обязательно - можно обращаться сразу по полному пути к нужному типу (возможно указывая имя сборки)) - это позволяет в одно и то же простнаство имён включать типы из разных библиотек и сборок!

И т.д. Java очень устарел - я не знаю ни одной фишки Java, ради которой на нём этом ЯП стоит программировать - разве что создавать оболочки API вот в таких вот специфических проектах плагинов к каким-то JVM программам (как EDT) - вынося всю логику в отдельно компилируемые пакеты на Kotlin.

Что касается Котлин, пробовал переписать свой проект на него и сильно застрял, может слишком много синтаксического сахара?

Всё новое не так просто принимается, как уже готовое и привычное!

Я, вот тоже, когда-то очень не любил C# - но платформа MS Dot NET Framework меня сразу пленила (я тогда программировал на Delphi под Windows (и на 1С 7.7), и грезил Linux и мобильными приложениями для КПК).
С# мне не нравился своей сишностью - уж очень многое он почерпнул из ненавистного мной С++ (как и Java - которую я не стал изучать по той же причине).
И тут вышел Delphi for .net (и далее Prism) - я просто "писал кипятком от счастья" (книжка по такому делфи у меня до сих пор на рабочем столе лежит - автора К. Пачеко - гениальная книжка).

Но позже, увы это направление объектного паскаля загнулось, переродившись в Oxigene - но так и не сыскало популярности!
Зато мелкомягкие вкладывали кучу бабла в развитие .NET, VB.NET и C# (и даже пытались переманить джавистов через J# - правда неудачно). Платформа.NET пухла крутейшими фишками (правда кросплатформенность была слабой - даже с Mono) - C# бурно развивался. И даже тогда я решил перейти с Delphi на Scala (который тогда компилировался и под JVM и под .NET) - красота синергии императивного и функционального стиля программирования меня просто поразила!

Но в итоге C# победил сражение за моё внимание (Scala остался почти таким же непопулярным как Delphi и Oxigene) - такие фишки как джнерики, асинхронные таски, динамические классы, нулабельные типы и операторы мне казались вершиной искусства императивного программирования + лямбды + замыкания (вот недавно к кривоватым делегатам наконец добавились и функции высшего порядка и операции над ними в функциональном стиле) + скоро добавятся и составные типы (в F# уже есть, хотя в Scala они есть уже очень давно, надеюсь со временем появятся и в Kotlin), трейты как в Scala уже есть и в C# (интерфейсы с реализацией по умолчанию).

Но всё-таки C#, как и Java во многом - это наследие С++
Вот Python не стал тянуть этот груз - и набирает высокую популярность! Rust тоже не стал тянуть - тоже набирает популярность!
Как и Kotlin - не тянет устаревшие парадигмы - впитал лучшее (но, увы, не всё) от Delphi/Oxigene, Python, Scala, Nemerle и C#, Java - и выдал красивый, легко изучаемый и легко читаемый синтаксис! Разочарует вот только ориентир на закрытость классов по умолчанию и регистрозависимость, ну и кортежи тут тоже реализованы так себе! Trait'ов тоже нет (они же интерфейсы с реализацией по умолчанию - хотя, уверен, появятся со временем, или может уже есть - и я что-то не знаю).

Ну и кросплатформенность на Kolin куда более интересная, чем на Java или C#
Поддержка LLVM от создателя ЯП - это очень широкие возможности кроосплатформенности!
17. user907889 21.10.20 06:20 Сейчас в теме
(16)

Судя по вашим ошибочным замечаниям вы совсем не знакомы с Java. Что касается ваших рассуждений, они слишком религиозны и страстны.
Лично я писал проекты и на Delphi и C#, и не питаю никаких чувств, в C# заинтересовал Xamarin, но не более. В данный момент пишу большие сложные проекты на Java и специально убил несколько дней на переход на Kotlin, пришлось отказаться, т.к. нужно было слишком много чего менять в архитектуре в худшую сторону. Но я уверен, что и Котлин для своих целей, например как разработка Android приложений как и Питон для обработки данных и C++ для систем и игр, найдет свое применение.
Спасибо за ответы и удачи.
18. Darklight 22 21.10.20 11:06 Сейчас в теме
(17)
вы совсем не знакомы с Java

Да я и не говорил, что знаю Java
Интересно, где я заблуждаюсь в недостатках Java (хотелось бы услышать мнение знатока Java)?

Что касается ваших рассуждений, они слишком религиозны и страстны

Ну... наверное да... парадигмы программирования уже можно причислять к религиозным воззрениям - тут холивор за холивором. Но лично я о вкусах не спорю, и свои взгляды не навязываю, хотя и имею очень глубокие и давно прорабатываемые взгляды на программирование - и Kotlin им удовлетворяет лишь отчасти.

Более того, в последний год я даже начал формировать совершенно новые взгляды - которым практически не удовлетворяет ни один ныне существующий ЯП - это взгляды, нацеленные в будущее - во вторую половину XXI века, когда в IT будут "править бал" совсем иные методологии разработки, чем сейчас (но всё основано на технологиях, которые доступны уже сейчас).

А насчёт страстности - вроде бы старался написать предыдущий комментарий сдержанно - возможно просто дело было поздним вечером и я просто уже очень устал, и особо не обращал внимание на то, как складывается текст комментария. Я не хотел его никак эмоционально окрашивать!


специально убил несколько дней на переход на Kotlin

Это смешно! Так можно с любым языком убить несколько дней - чтобы потом сказать, что язык - говно!
В любой язык (если есть желание серьёзно его использовать, а не писать критику после поверхностного знакомства) нужно углубляться, и углубляться не менее года (правда не в режиме 100% посвящения времени только новому ЯП)!
Ещё - очень нужно обязательно прочитать целиком правильную книгу по языку (и разобрать на практике примеры из неё, попробовать сделать на основе их что-то своё, а не тупо набрать готовый текст).
Например для C# (как пример - т.к. эта тема мне хорошо известна) есть великая книга (не для начинающих)
"C# in Depth" (Jon Skeet)
Ещё отличная книга "C# 8.0 in a Nutshell" (Joseph Albahari)
"More Effective C# (Includes Content Update Program): 50 Specific Ways to Improve Your C#" (Bill Wagner)
"CLR via C #" (Jeffrey Richter)
"C# 6.0 Cookbook: Solutions for C# Developers" (Jay Hilyard , Stephen Teilhet)
Без этих книг углубляться в C# бессмысленно. А ведь ещё есть книги по отдельным технологиям.

Как и для Java (тут могу конечно ошибаться, привожу на вскидку) тоже есть свои библии (не для начинающих)
"Java Language Features: With Modules, Streams, Threads, I/O, and Lambda Expressions"(Kishori Sharan)
"Java 9 Revealed: For Early Adoption and Migration"(Kishori Sharan)
"Java in a Nutshell: A Desktop Quick Reference" (Benjamin J. Evans)
"Effective Java" (Joshua Bloch)
"The Java Virtual Machine Specification" ( Tim Lindholm, Frank Yellin)
"Java Cookbook: Problems and Solutions for Java Developers " (Ian F. Darwin)
"Modern Java Recipes: Simple Solutions to Difficult Problems in Java 8 and 9" (Ken Kousen)
"Modern Java in Action: Lambdas, streams, functional and reactive programming" (Raoul-Gabriel Urma)
И ещё куча книг по отдельным технологиям

По Kotlin пока ещё такого разнообразия - но кое-что почитать тоже нужно
Kotlin In-Depth [Vol-I]: A Comprehensive Guide to Modern Multi-Paradigm Language (Aleksei Sedunov)
Kotlin In-depth [Vol-II]: A comprehensive guide to modern multi-paradigm language (Aleksei Sedunov)
"Hands-On Design Patterns with Kotlin: Build scalable applications using traditional, reactive, and concurrent design patterns in Kotlin" (Alexey Soshin)
"Programming Kotlin: Create Elegant, Expressive, and Performant JVM and Android Applications" (Venkat Subramaniam)
"Kotlin Cookbook: A Problem-Focused Approach" (Ken Kousen)
"Kotlin in Action" (Dmitry Jemerov, Svetlana Isakova)
И ещё куча книг по программированию под Android на Kotlin (Ибо там этот язык стал официальным)

Книг по Kotlin Native пока нет вообще - соответственно тема кроссплатформенности пока не особо освещена (только оф документация и редкие статьи в интернете! Корутины тоже пока не особо освещены - а это одна из важных технологий Kotlin (наряду с продвинутыми лямбдами).
Как и тема программирования, скажем под Node.js на Kotlin

Но я уверен, что и Котлин для своих целей, например как разработка Android

Думаю, что у Kotlin есть более широкое будущее - но оно пока туманно! Язык ещё слишком молод
19. user907889 21.10.20 11:57 Сейчас в теме
(18)
Да я и не говорил, что знаю Java

Рассуждаете он незнакомом предмете называя его устаревшим, это странно.

(18)
Интересно, где я заблуждаюсь в недостатках Java (хотелось бы услышать мнение знатока Java)?

Почти во всем, отдельно объяснять нет ни времени ни желания.

(18)
парадигмы программирования уже можно причислять к религиозным воззрениям

С профессиональной точки зрения большая ошибка.

(18)
Так можно с любым языком убить несколько дней - чтобы потом сказать, что язык - говно!

Где я сказал что Котлин говно? Я лишь привел пример своего опыта, что на Котлин тяжело было перевести сложный проект. С Котлин работал в Android.

На этом я прекращаю нашу дискуссия за незнанием вами темы.
Удачи.
21. Darklight 22 21.10.20 13:43 Сейчас в теме
(19)
ассуждаете он незнакомом предмете называя его устаревшим, это странно.

Считайте это лично моим мнением, основанном на прочтении ряда других ресурсов, проведённом сравнении функциональности, и опыте разработки на других языках. Я не навязываю своё мнение - это только мои взгляды.
При этом я дал им хоть какое-то обоснование. В отличии от Вас - Вы не стали конструктивно защищать ЯП Java. Но я не хочу с Вами спорить.
Почти во всем, отдельно объяснять нет ни времени ни желания.

Это Ваше право.

(19)

парадигмы программирования уже можно причислять к религиозным воззрениям

С профессиональной точки зрения большая ошибка.

Это сложный философский вопрос...

Где я сказал что Котлин говно? Я лишь привел пример своего опыта, что на Котлин тяжело было перевести сложный проект. С Котлин работал в Android.

Согласен, погорячился - не говорли. Любой проект переводить с одного ЯП на другой сложно соразмерно сложности проекта помноженно поделённо на средства автоматизации этого перевода кратно отношению опыта программирования на этих двух ЯП и глубины знания самого проекта!

Эта идея сама по себе была обречена на провал.

Во-первых -Вы как минимум (я так думаю) ещё не очень глубоко знали возможности Kotlin (не "набили руку") и инструментарий по переводу (ну а может эти средства ещё не достаточно развиты - и нужно просто подождать).

Во-вторых, браться переволить сразу сложный проект - это сама по себе ошибка - это всегда будет эпик фейл! Нужно начинать с более мелких проектов

В-третьих, как это и советуют разработчики Kotlin, не надо сразу пытаться перевести весь проект на Kotlin. Лучше переводить постепенно. Java и Kotlin условно полностью совместимы. Можно просто потихоньку начинать писать новые пакеты не на Java а на Kotlin и подключать их к тому же проекту. И переводить на Kolin не всё подряд - а отдельные небольшие части (дабы тут Java изначально имеет очень мелкую детализацию исходников - с разбиением один клкасс -
один файл).

В-четвёртых, можно стараться применять средства авто конвертирования отдельных блоков кода из Java в Kotlin - и дальше вносить уже правки.

В-пятых, всё-таки сначала лучше разрабатывать, параллельно с Java, на Kotlin хотя бы небольшие доп. проекты, чтобы набить руку, подъизучить язык, теорию и практику. Хотя бы годик другой - прежде, чем браться за доработки и тем более тотальные переносы крупных проектов с Java на Kotlin

Я бы вообще не стал бы браться за крупные проекты (если изначально не ставить цель делать их именно, и условно безальтернативно, на Kotlin) - пока не выйдет хотя бы версия Koltin выше чем 2.0 (сейчас 1.4 - языку мене 10 лет после релиза 1.0). Вот, по опыту C# - пока не вышел C# 3.0 - он вообще был гадким утёнком. А мощь он стал набирать только с версии C# 6.0 (до этого он меня даже не особо привлекал, ну кроме платформы .NET).

Но, нумерация версий Kotlin всё-таки, другая. Думаю, актуальную 1.4 версию, всё-таки, стоит сравнивать по развитию с C# 3.0 (сравнение очень "притянуто за уши", т.к. в Kotlin есть многое, что есть в C# 7.0, он же всё-таки равнялся на актуальные фишки в языках программирования; поэтому это просто указание этапа развития - с прогнозированием дальнейших объёмов роста ЯП Koltin; C# шёл к версии 3.0 от финального релиза 1.0 около 5 лет, а до актуальной версии 8.0 потом ещё почти 14 лет - немалый срок и немалые инвестиции).

В общем ждём дальнейшего развития ЯП Kotlin - хотя бы версию 1.6, 1.7 (на это потребуется года 3-4) - ну а там, глядишь, и 2.0, 2.1 появятся. Пока - это всё-таки ещё не мейнстрим язык, скорее полуэкспериментальный! Тут нет таких больших финансовых вложений, какие делала компания Микрософт в C# - язык развивается не быстро (примерно так же как Java)

И ещё - многие мигрируют на Kotlin ещё и на фоне комерциализации Java компанией Oracle (и судебными разбирательствами оной с компанией Google). Да - есть сторонние рантаймы JVM - но язык то тот же, вон у гугла тоже был свой рантайм, а с Ораклом судиться пришлось! Вот тут нужно быть поаккуратнее с таким гигантом.
Поэтому, например, Микрософт сразу выпустила новую инкарнацию .NET Core и C# 8 под лицензией Apache License 2.0 и с открытым исходным кодом - чтобы развеять опасения сообщества, что нечто подобное произойдёт и с Микрософт.
И Kotlin JetBrains выпустили под лицензией Apache License 2.0 и компилятор открыт

Ну и, разрабатывать мобильныеприложения для Android будет удобнее на Kotlin - это тоже будет подстёгивать использовать его, вместо Java. А позже подтянется Kotlin Native и Kotlin JS.

Со временем это всё может потеснить и Java не только с мобильных платформ, Java EE c пьедестала самого популярного языка для бакэнд разработок! Но на это ещё уйдут десятилетия...
5. pavel06 18.10.20 19:26 Сейчас в теме
Про платность target-платформы Вы упомянули.
ИТС-подписка подходит с ее паролем или надо отдельно платить? И сколько?
7. marmyshev 279 19.10.20 09:52 Сейчас в теме
(5) если в доступе ИТС у вас есть само приложение EDT - то доступ к таргет-платформе это тоже самое по сути. Только в другом формате.
Можно даже установленную EDT использовать в качестве таргет-платформы (способ сложнее и менее удобный, но всё же), но я бы не рекомендовал для реальных разработок...
10. user907889 20.10.20 13:31 Сейчас в теме
А зачем OpenJFX? Что там пишется на JavaFX?
13. marmyshev 279 20.10.20 18:43 Сейчас в теме
(10) JavaFX используется в работе самой EDT - это требование для запуска (из документации к EDT).
Собственно без JFX запустить как бы можно, но везде и правильно работать оно не будет.
15. user907889 20.10.20 19:08 Сейчас в теме
(13) Я это к тому, что JavaFX мертвая технология GUI несущая тяжесть в проект, по сути ей нечего делать в EDT, т.к. Eclipse написан на SWT - Swing.
20. marmyshev 279 21.10.20 13:06 Сейчас в теме
(15) JavaFX создана чтобы заменить Swing, к тому же - в эклипс-платформе (и в EDT соответственно) нет свинга. А по поводу "мертвости" технологии https://en.wikipedia.org/wiki/JavaFX - я бы усомнился :) в этом году только 2 мажорных релиза...
23. user907889 21.10.20 14:26 Сейчас в теме
(20) JavaFX к сожалению устарела морально
22. Darklight 22 21.10.20 13:55 Сейчас в теме
(15)(15)Тутсодержательно всё разъяснено по поводуJavaFX как технологии. Ну а для EDT - она просо нужна по системным требованиям
24. Darklight 22 21.10.20 14:43 Сейчас в теме
(22тут описаны актуальные проблемы JavaFX
Оставьте свое сообщение
Вопросы с вознаграждением