Haulmont corporate blog
Java
JavaScript
Comments 69
0
Оно старое и медленное, там есть проблемы с CSS3 анимациями. И там совсем другие баги, а Electron — это свежий Chromium, что радует.
+1
оно обновляется потихоньку, баги фиксятся. У вас довольно простой ui, судя по скриншотам, проблем быть не должно. Не нужно тащить лишние зависимости, возможно памяти будет жрать меньше
0
К сожалению, WebView обновляется только с новой мажорной JDK, и там не самый распространённый движок WebKit.
User Agent: Mozilla/5.0 (Linux x86_64) AppleWebKit/604.1 (KHTML, like Gecko) JavaFX/9 Safari/604.1
+1
JavaFX планируются отделить от JDK. После этого появится возможность обновлять их по отдельности.
0
А за электрон вообще стрелять нужно. Если только это не что-то жирное и корпоративное. Работать-то он работает (более менее), но жрёт столько…
+1
да не так уж и много он жрет, как тот же хром, который отъедает по сотне мегабайт на вкладку.
0
И хром много жрет, но там хоть вебом это можно оправдать, а здесь-то зачем это?
0
так на чем сейчас можно быстро и легко писать ui, кроме веба?
0
Веб — это не быстро и не легко. Веб породил и сделал популярными несколько профессий, которые мало распространены в других областях. Веб фронтенд сейчас — это куча разношерстных инструментов, без которых он несъедобен.
Для сравнения, допустим, Qt.
+3
Скачал посмотрел я CUBA Studio. При запуске установки вылетела. Второй раз установилась, но не запускается, вообще. Windows 10 x64, SSD, 16 gb RAM. Как-то упало сразу настроение… буду разбираться.
0

Насколько я помню Oracle, сама рекомендует для desktop приложений тащить свою jre, есть даже ужатые варианты.

0
Да, мы собираемся собрать всё с jlink в приложениях на JDK 10 и получить небольшой бандл Java без JavaFX и других больших модулей.
0
Похоже что, что-то недоустановилось капитально, у вас всё в порядке с JDK на компьютере? Мы пока не поддерживаем запуск на JDK 9. Если вы её устанавливали, то она могла остаться дефолтной JRE.
0
Скажите, а есть готовые бизнесс-приложения, которые можно посмотреть?
0
На этом стеке (Electron.js + Java) мы пока делаем только Studio, около полугода как выпустили. Бизнес приложения тоже на подходе.

Приложения на платформе можно найти здесь: www.cuba-platform.com/case-studies
+6
Печально все это, 4 относительно несложных(имеется в виду предоставляемая функциональность) приложения, например хром, слэк, скайп и например ваша программа запросто проглотят 8 гб(далеко не у каждого лэптопа хочу заметить!) оперативы и система превращается в слайдшоу либо агрессивно изнашивает ссд используя как своп.
+1
Смотря что реализовывать, мы делаем инструмент для разработчиков, а не чат. Там большая часть памяти уходит на JVM и реализацию функциональности, а Electron тратит всего 70-100 MB памяти, что раз в 5 меньше памяти для основных фич приложения.
0
Но вы же в статье не делали таких оговорок, это звучало как «серебряная пуля».

А теперь, о том как переиспользовать ваш опыт web-разработки и web-UI при разработке настольных систем на Java. Так, чтобы вам не пришлось разрабатывать отдельные web и desktop приложения.
-1
А чем так плох вариант создания локального сервиса с веб интерфейсом? Ну кроме цены разработки. Двойным кликом запустил — открылся браузер и сервис для передачи данных в браузер, тут сразу все модные штуки в UI будут и доступ к локальной машине полноценный как у обычного приложения
0
Ну из неудобного, вы не контролируете обновление браузеров и то, что вы тестировали может сломаться с обновлением Chrome / Firefox / Edge.
0
Впрочем, как и с обновлением Java. После выхода Java 9 многие приложения перестали работать. Разработчикам приходится фиксить. Также и с броузерами — разработчик обновит и выпустит новую версию.
0
Обновление Java можно теперь контролировать, в Java 9 есть jlink, чтобы забандлить нужную с приложением.
+1
Будем надеяться, что AvaloniaUI сможет составить достойную конкуренцию вот этому всему.
0
Ну так это опять надо изучать XAML, знания HTML/CSS там не получиться применить
0
Между AvaloniaUI и JavaFX принципиальной разницы нет: и там и там — специализированный язык разметки формы, немного CSS, и этого, в принципе, должно хватить на формы для офисной системы.
А это гуано (Java + Electron) надо выкидывать сразу же.
0
в JavaFX можно формы делать и без разметки(а простые даже удобнее).
+6
А тем временем ребята из JetBrains не комплексуют и пилят свою Idea на swing :)
0
1. Это огромный продукт, который не надо сильно кастомизировать каждый релиз. 2. У них много квалифицированных кадров, которые могут продолжать писать на Swing.
+3
а разве большинство десктопных продуктов надо «сильно кастомизировать» каждый релиз?

уж поверьте, для написания свинг приложений не требуются какие-то особенные квалифицированные кадры, достаточно обычных людей с руками из плеч.
0
А вы спросите этих людей с руками, нравится им писать на Swing? Захотят они новый проект писать на нём? Смогут они новые требования заказчиков на нём выполнить?

А веб разработчикам не только нравится, они и сделают быстрее и качественнее.
+2
Мне нравится писать на Swing. Вполне рабочий и живой инструмент.

На счет «качественнее» у меня большие сомнения, электрон + java это ужас…
+1
Веб-разработчик, десктоп и качественнее? Фантастика на втором этаже. Никогда не любил десктоп на яве. Но десктоп на электроне — это уже из серии «и тут снизу постучали». Он объединяет недостатки как веба (никакущая виртуализация, огромное потребление ресурсов, тормоза), так и классики (необходимости установки, зависимость от окружения, безопасность).
0
Ну да. А про плагины, которые пишут совершенно отдельные люди, вы видимо забыли?

А эклипс, который судя по комментариям, тут кое-кому не нравится — вы никогда не видели, как именно его можно кастомизировать? Какой-нибудь dbeaver, для примера?

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

Ну т.е., при всех их реальных недостатках, на swing и на javaFX реально пишутся и широко используются вполне себе хорошие продукты. Если при этом взять тот же котлин, или груви, то это получается еще и достаточно просто. И честно говоря, то что при этом у JavaFX немного недо-CSS, всех использующих реально волнует в последнюю очередь.
0
На всякий случай, в npm есть модуль java, который дает доступ из приложения на js к jni.
0
Да, надо определённо попробовать для варианта без сети, правда там пока только Java 8 поддерживается. И есть риск что javah удалят скоро из JDK: openjdk.java.net/jeps/313 что сломает этот модуль
+1
Складывается ощущение, что статью писал нездоровый человек, незнакомый с реалиями компаний. Цитирую:
Чаще всего дополнительное оборудование используется в enterprise приложениях: банках, ERP, бухучете и т.д.

И
Кроме того, есть задачи, которые плохо могут быть решены в web. Главная из них — независимость от серверов и сети.

В компаниях намертво фиксируется окружение для приложения: для IBM/Lotus Notes автоматически устанавливается приватная JRE от IBM, для SAP R/3 ставится JRE от SAP, для 1С Торговли, которая надёжно работает только под 1С 7.7.25 ставится именно эта платформа и так далее. Нет никакой проблемы в том, чтобы запустить даже старинное приложение на AWT, не говоря уж о SWING, в современном enterprise.
0
Говоря о независимости от серверов, я имел в виду оффлайн в веб-приложениях, а не софт серверов. В цитате речь идёт об этом.
0
Эмм, я очень непродуманный комментарий написал.
В статье описываются проблемы:
  1. сложно сделать GUI, так как SWING, JavaFX не развиваются.
  2. Нет возможности поставить на клиента нужную версию JRE.
И решение: А мы вот возьмём, и вместо нескольких мегабайт java-библиотек притащим node.js + Electron.
Так вот, я хотел сказать, что проблем с GUI, на самом деле, нет, так как в тех компаниях, где я работал, на всех клиентских и серверных компьютерах ПО ставилось скриптами, и для каждого приложения была жёстко зафиксирована платформа: для клиента Lotus Notes — приватная JRE от IBM, для клиентской части SAP — JRE от SAP, а для каких-то своих приложений (наподобие JPassword safe, SQuirreL SQL client, и, собственноб Ecipse — JRE от Oracle.
Просто перед развёртыванием ПО у клиента надо прописать нужную версию JRE в требованиях к среде выполнения вашего ПО.
+1
И ещё минусы: при использовании Электрона наше приложение зависит от трёх компонентов: Chromium, node.js и JVM. А в нормальном Java-приложении мы зависим только от JVM. Для чего всё и делалось изначально. Вдобавок к этому, мы получаем замечательную попоболь в организации совместной работы Электрона и нашего мини-вебсервера на Джаве. И памяти всё это будет жрать, как не в себя: пара гигов — браузеру, пара гигов — ноде, и всё, что осталось — джаве. Тупиковый путь. Не берите, люди, эту каку в руки!
-1
> И памяти всё это будет жрать, как не в себя: пара гигов — браузеру, пара гигов — ноде, и всё, что осталось — джаве

Это вы совсем мимо. В нашем приложении весь Electron (вместе с Node.js) потребляет 100 MB памяти. Это не браузер, в котором юзер себе открывает сотни вкладок. Это движок рендеринга страниц, который управляется разработчиком.
+1
А что не так JavaFx? Что CSS не вебовский или еще причины есть? Приложения получаются на пару мегабайт, жирнеют лишь от добавляемых либ, а Scene Builder помогает быстро вьюхи клепать…
0
Запустите его на ARM. Плюс, куча багов, которые весят десятилетиями. И вообще проблемы с исправлением багов.
0
Scene Builder? Быстрее? Мне доводилось писать пару несложных приложений на JavaFx (Java 9 на тот момент). На моём десктопе (Ryzen 5 6-Core, 16GB RAM) он работал просто отвратительно медленно. На MBP 13 2015 проще его вообще не запускать, ибо запустить приложение и проверить как всё выглядит выходило быстрее, чем дождаться открытия билдера.

Может, я неправильно готовлю JavaFx и есть решение? (Единственное решение, к которому я тогда пришел — standalone приложение с билдером gluon или просто вёрстка в fxml и тестирование вживую).
-1
самый гибкий инструмент сегодня — это HTML / JS / CSS

Хипстерский булщит! Это ж как нужно удариться головой об веб, чтобы заявлять подобное?

З.Ы. Десктоп и джава вообще плохо совместимы. Жрущий память JRE и уродский интерфейс — первые ассоциации при фразе «десктопное приложение на Java». Хотя по сравнению с «электроном» даже Эклипсу хочется в объятья броситься.
0
ну, кстати, не всё так плохо.
Я тут попробовал переписать одно свое приложение с VS на kotlin+javafx — очень даже недурственно. И по ресурсам в рамках разумного жрет.
+1
Electron, это, конечно, замечательно.
Но почему в нем мессенджер жрет ресурсов, как Idea с открытым проектом?
0
Ага, давайте интерфейсы на html писать. Сумасшедшая идея.
На 95% бред, а не статья.
0
Разработчики браузеров себе свой интерфейс уже так и пишут. В самом HTML / CSS нет ничего странного или плохого, 50% интерфейсов сегодня это веб-приложения.
-2
Браузер != все desktop приложения. Просто статистическая погрешность в мире desktop.
+1
А что с FX не так? На мой взгляд, очень даже хорош — немного css — и получаем приложение как на электроне, но памяти жрет на порядок меньше.
Вот например окно, на JFX
image
0
на мой взгляд.
на данный момент, немного слабовато сделаны некоторые компоненты(притом по мелочам).
а так всё очень достойно.

btw: а разве вид «как на электроне» — это хорошо?
цель, как правило, непугать юзера нестандартным внешним видом, а выглядить как остальной гуй.
0
Подобный дизайн куда лучше традиционных окошек в стиле W'95. Ибо юзер уже привык к вебу и мобильным приложениям, имеющим похожий дизайн. Да и нельзя без жестких танцев с бубном и громадных временных затрат сделать полную нативную поддержку одновременно линукса (а там три активных оконных среды, да), винды и макоси. Это получилось сделать только у Qt, но то плюсы…
0
в электроне, почемута, всегда трешовое оформление.
ну и традиционные проблеммы с клавиатурой.

а вот в javafx мне вполне понравилось как стандартное так и инверсное.
+2
Он сыр, крив, не портируем и ужасен. Покажите мне вменяемый Richedit на Fx.
0
вот richtext editor одна из компонент мною никогда неиспользуемых, да и вобще редкая задача :)
есть вроде — HTMLEditor, StyledTextArea, RichTextFX, TextFlow умеет картинки всякие и прочее, ну и WebView никто не мешает заюзать
0
нормальное — это какое?

как по мне, идея wysiwyg несколько несовершенна по сути
+1
Редка задача вывести заранее неизвестный текст разными шрифтами? Задача типовее некуда. Журналы, протоколы, статусы системы — да в любом приложении. Начиная со сраного мессенджера. Написать сраный мессенджер на JavaFX это неисполнимый квест, кстати.
Ну, вы в курсе, что StyledTextArea/TextFlow не позволяет пользователю скопировать текст в буфер обмена? Кому оно такое нужно?
HTMLEditor убог для таких целей.
WebView? Шутите? Тащить за собой полноценный Web-движок ради 10 строк текста? Иметь на форме 5 WebView одновременно?
И при всё при этом он плохо подходит — сложно контролировать, сложно управлять прокрутками и т.п.
Вот потому десктопные программы на Java и ненавидят.
0
вот действительно ниразу невстречалась такая задача.
либо полноценный html рисовать либо просто текст
0

Не совсем понятен мотив использования электрона. У вас уже есть одна зависимость в системе — JVM, и наличие зависимости от браузера уже не принципиально. Сделайте Jetty + Vaadin и открывайте при запуске страницу в system default browser. Ваш электрон в минималке займет лишние 100Mb. Если попытаетесь заэмбеддить jre, то это еще плюсом 180мб, а если все скомпилируете AOT, то будет около 250мб. Итого 350мб для простого "хелло ворлд", что может быть и оправдано для девтулзы, но для простого нативного клиента — вряд ли.
Далее, так ли принципиальна зависимость от джавы? Для клиентских технологий есть куча приблуд для джавы: JSweet, GWT, TeaVM, вплоть до полной JVM на JS: CheerpJ.
Ну и по способу деплоймента: зачем бандлить электрон и установщик и почему бы не сделать Chrome Application, распространяемую через Chrome Store?

0
Уже много лет делаю десктоп приложения на SWT. Родной системный интерфейс, все компоненты ведут себя как надо, работает очень быстро, памяти жрет мало, баги фиксятся(более того, даже исправлены некоторые баги в отрисовке компонентов которые есть в windows/linux/etc). Если надо что-то нестандартное, то нужно писать самому, но это не страшно, если руки из нужного места.
А статье указано что SWT не развивается, а как он должен развиваться? Это прослойка для вызова нативных UI функций операционной системы. Если что то появляется в ос, то соответственно появляется в библиотеке. Никто не обещал что будет 100500 компонентов для рисования супер модного UI как в вебе.
Only logged in users are able to leave comments. , please.