LINUX.ORG.RU

Кто пишет gui на яве?

 ,


2

5

Правда, что одно и тоже приложение javaFX можно запустить на десктопе, в браузере и на мобильном устройстве? Насколько это хорошо работает?

Хотя ни одной такой программы не встречала, интересно кто их пишет и для кого?

PS Встретила здесь скептическое отношение к ява, но мне она нравится больше чем питон или перл. Возникает ощущение какой-то фундаментальности языка и делает его очень солидная компания.


ни разу не пробовал, но есть подозрение, что они тупо юзают Java Web Plugin. Который кстати, не должен рабоать в свежих Хромах, потому что они выбросили API плагинов и заменили на PPAPI.

Но имхо, апплеты - зло, такие приложения должны выполняться в виде web start приложений (щелкаешь по ссылке - у тебя запускается локальное приложение с нормальным локальным интерфейсом, а не вебное убожество внутри странички).

stevejobs ★★☆☆☆ ()

javaFX можно запустить на десктопе, в браузере и на мобильном устройстве

Fx нельзя запустить на мобильном/андроиде. Java для андроид транслируется в свой байткод который интерпретирует своая vm - dalvikvm. Да и на андроид UI туликты свои. В броузере java теперь существует только как webstart приложения, можно видеть в банках, если юрик, там для транзакции нужна эл. подпись, а не верификация по sms, вот там часто используют java webstart.

Aber ()
Ответ на: комментарий от Eva

оно скачивается с сервера, имеет объем меньше веб-странички (специально расчитано на это, а не JS-лапша). Локально должна быть установлена сама Java (Java-плагин к браузеру идет из коробки)

stevejobs ★★☆☆☆ ()
Ответ на: комментарий от stevejobs

Это же очень классно. Клиент всега имеет последню версию программы, она не зависит ни от ядра, ни от библиотек ни отчего еще, даже от оси не зависит, достаточно чтобы у него стояла ява 8.

Тогда в чем подвох? И это широко не используют?

Eva ()
Ответ на: комментарий от Aber

яркий ответ! Все заблуждения про android и java в одном предложении

1) хостовая вм никак не связана со средой выполнения вебстарта. Например, по-умолчанию Windows тоже не умеет запускать джаву, и что? Джава устанавливается отдельно. На Андроид джаву тоже нужно устанавливать отдельно, как и на любую другую ОС.

2) то, что работало на Андроиде - не Java. Вплоть до самого последнего времени. Там была своя виртуальная машина, код в которою компилируется их Java-подобного языка. Ни то ни другое - не Java.

3) dalvikvm давным-давно всё, был заменен на ART runtime. Последняя версия с Дальвиком - Киткат, доля - 14 процентов и стремительно падает.

https://fossbytes.com/most-popular-android-versions-always-updated/

4) ART runtime тоже отправился в небытие начиная с Android 7,

5) и вот OpenJDK в Android 7 - это уже Java.

Я вижу это так: андроид-разрабам нужно ждать, когда Java появится на платформе. В смысле, дождаться, когда Nougat (7) и Oreo (8) займут по 30-40 процентов доли рынка.

К сожалению, не могу проверить работу Вебстарта под новым андроидом (потому что лень!). Это упражнение на дом =) Скорей всего - не работает.

stevejobs ★★☆☆☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от devzero

по-умолчанию в песочнице, конечно. Но могут попросить больше - например, до вебки и микрофона. Даже до файловой системы. Но - только через систему привилегий? и окно с запросом этих разрешений (как при установке приложений на мобилки)

stevejobs ★★☆☆☆ ()
Ответ на: комментарий от Eva

Java должна быть на клиенте. Она не получило такое широкое распространение, т.е. её надо ставить. Для юриков всегда нужно было ставить бинарные блобы, там свои «заморочки» потому им не привыкать что-то ставить. Деньги требуют заморочек :)
Еще webstart используют во внутрекорпоративных приложениях, как раз из-за того, что можно обновлять версию приложения, всегда загружается самая актуальная из корпоративной сети.

Aber ()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Eva

Тогда в чем подвох? И это широко не используют?

подвох в том, что Java нужно изучать, а налабать приложуху на HTML+JS - это один вечер, фигак фигак и в продакшен)) Ну и мобилки, на которых это не работает, да...

везде, где нужно серьезное шифрование, взаимодействие с аппаратными ресурсами компа (например, аппаратный криптоключ) - это используют. Хотя можно то же самое сделать на .NET, если ты вдруг шизик и хочешь попасть в анальное рабство к Microsoft

stevejobs ★★☆☆☆ ()

JavaFX — изначально мертворожденная технология, которая в конечном итоге обанкротила sun.
swing — уже давно помер.
awt — нет только помер, но уже и разложиться успел.

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

morse ★★★★★ ()
Ответ на: комментарий от Eva

Почему в банках не тормозит?

ну... есть подозрение, что у банков хватает денюжек на 24-хядерные Зеончики, вот и не тормозит

metawishmaster ★★★ ()
Последнее исправление: metawishmaster (всего исправлений: 1)

Ну jb свою idea на жабафуфыкс делают.

Мне иногда кажется, что гуй разумнее делать даже на racket, чем на этом фуфыксе.

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

nihirash ()
Ответ на: комментарий от Eva

По сравнению с Явой - нет. На JS принято говнокодить, и вся инфраструктура говнокодо-терпимая. Т.е. на ней удобно писать write-once код, и в случае проблем - просто переписывать фичи с нуля.

В Яве фреймворки заточены под аккуратный, поддерживаемый, чистый дизайн. Это значит, все механизмы, которые обеспечивают такой дизайн - придется изучать. Это время.

Совершенно разные по подходу миры.

stevejobs ★★☆☆☆ ()
Ответ на: комментарий от I-Love-Microsoft

И чо, прям можно на десктопе чето запустить, а потом на андрюхе?

да, многие библиотеки теперь можно будет использовать прям на Андроиде, без всякой адаптации

но все что связано с гуем и системными сервисами - нет, это же гвоздями прибито к Андроиду)) Это разрабатывает не Оракл, а Гугл, у гугла переносимость в приоритетах вообще не стоит

stevejobs ★★☆☆☆ ()
Ответ на: комментарий от stevejobs

то, что работало на Андроиде - не Java. Вплоть до самого последнего времени

Реализаций jvm вагон и тележка - они все не Java? pypy это не пистон, а clang не с++? Стиви, вот что за чушь ты несешь? Тебе не надоело?

ertgblasd ★★ ()
Ответ на: комментарий от Eva

JavaFX нужно отдельно доустанавливать, если работаешь на OpenJRE/OpenJDK8, так как в самом OpenJRE/JDK поддержки JavaFX нету. Оверлей называется openjfx8-devel-8.u172.b00

OpenJFX is an open source, next generation client application platform for desktop and embedded systems based on JavaSE. It is a collaborative effort by many individuals and companies with the goal of producing a modern, efficient, and fully featured toolkit for developing rich client applications.

WWW: http://openjdk.java.net/projects/openjfx/

iZEN ★★★★★ ()
Ответ на: комментарий от morse

Не надо писать гуй на жаве, вот ей-богу не надо. Делайте сразу клиент-сервер через веб, если уж так приспичило писать именно на жаве.

А давайте скрипто-дети заткнуться и не будут лезть в ту область, о которой они только слышали и не понимают проблем, а? А то уже накодили на JS кучу говнокода, что несколько вкладок броузера отжирают всю доступную оперативную память в системе. Приложения на Java/Swing могли вполне себе нормально работать на 64-128 МБ ОЗУ и Pentium II.

iZEN ★★★★★ ()
Ответ на: комментарий от ertgblasd

джава - это то, что проходит compatibility tests на соответствие стандарту Джавы. Например, IBM J9, Excelsior Jet, или даже какая-нибудь Maxine. То, что было во времена Dalvik, на гордое звание джавы даже близко не тянет

stevejobs ★★☆☆☆ ()
Ответ на: комментарий от iZEN

Приложения на Java/Swing могли вполне себе нормально работать на 64-128 МБ ОЗУ и Pentium II.

А когда-то давно всем и 640кб хватало, и что? Мы говорим о стандартах индустрии или о влажных фантазиях фанатиков? Приложения на свинге - это легаси, которое переписывают на современные фреймворки при первой же возможности. А javafx вообще нигде не используется.

Так что давайте фанатики заткнутся и не будут лезть в ту область, о которой они только слышали и не понимают проблем, а?

morse ★★★★★ ()
Ответ на: комментарий от iZEN

Приложения на Java/Swing могли вполне себе нормально работать на 64-128 МБ ОЗУ и Pentium II.

Формально да, но я помню как в первый раз запустил netbeans на celeron 400 с 64 метрами памяти, меню отрисовывалось поэлементно, хотя видел не менее занимательный нативный, проприетарный продукт.

. Делайте сразу клиент-сервер через веб, если уж так приспичило писать именно на жаве.

Пользуюсь таким. Syncthing называется, написан на go, вешает веб интерфейс на порт, причем для каждого пользователя в системе нужно отдельный порт. Это не нормально и не очень удобно, но наверное самый простой способ сделать кроссплатформенный ui.

Aber ()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Eva

на Qt =)

правда это те же плюсы, но с сахарком и единорогами :)
пишется быстро и удобно, как по-мне...

P.S. адепты гнома юзают простой C с какой-нить GTK

metawishmaster ★★★ ()
Последнее исправление: metawishmaster (всего исправлений: 2)
Ответ на: комментарий от morse

Так что давайте фанатики заткнутся и не будут лезть в ту область, о которой они только слышали и не понимают проблем, а?

А давайте наоборот: сделаем десктоп для приложений, а веб-гуйню засунем в какой-нибудь бровсер, а? А то уже обосрались со своим блевотно-юзабельным «плавным» квадритиш-практишь-гут в Windows8/10/Gnome3.

iZEN ★★★★★ ()

Встретила здесь скептическое отношение к ява

Довольно странно для форума который написан на жабке. Не слушай тех дурачков.

чем питон или перл

Ну вот это, правда, не аргумент. Всё что угодно лучше чем питон, или перл.

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от Eva

Получается, что кроме библиотек с++ ничего так и не создали?

libglade/GladeXML

Glade — свободное приложение для визуального создания графических интерфейсов на основе GTK+. Описание визуально создаваемого разработчиком интерфейса сохраняется в файлах формата XML, которые затем могут быть подключены к программам во время исполнения с использованием объекта GtkBuilder (на ранних стадиях развития проекта использовался собственный формат GladeXML и отдельная библиотека libglade[4]). Таким образом, Glade можно применять для описания и создания графических интерфейсов в программах на различных языках.

Ранние версии позволяли также создавать шаблонные обработчики событий на языке C, но эту возможность было рекомендовано не использовать, так как она вела к появлению кода, который было очень сложно поддерживать и модифицировать. В версии 3 генерация кода убрана из программы вообще.

> pkg info libglade2
libglade2-2.6.4_8
Name           : libglade2
Version        : 2.6.4_8
Installed on   : Sat Jul  1 18:01:33 2017 MSK
Origin         : devel/libglade2
Architecture   : FreeBSD:11:amd64
Prefix         : /usr/local
Categories     : gnome devel
Licenses       : 
Maintainer     : gnome@FreeBSD.org
WWW            : UNKNOWN
Comment        : GNOME glade library
Options        :
	PYTHON         : off
Shared Libs required:
	libgtk-x11-2.0.so.0
	libpangoft2-1.0.so.0
	libglib-2.0.so.0
	libgobject-2.0.so.0
	libpango-1.0.so.0
	libfreetype.so.6
	libcairo.so.2
	libxml2.so.2
	libgdk-x11-2.0.so.0
	libintl.so.8
	libatk-1.0.so.0
	libfontconfig.so.1
	libgdk_pixbuf-2.0.so.0
	libgio-2.0.so.0
	libpangocairo-1.0.so.0
Shared Libs provided:
	libglade-2.0.so.0
Annotations    :
Flat size      : 289KiB
Description    :
LibGlade allows GLADE interfaces to be handled at runtime, freeing
GUI development from code development.  This allows an interface to
be changed without requiring a re-compilation.

У MS есть язык для разметки GUI - XAML.

iZEN ★★★★★ ()
Ответ на: комментарий от Eva

Подвох в том, что на самом деле не работает. Вот например jalview так написан. Мы его пытались использовать в классе, на половине компов он не заработал. У кого-то слишком старая версия Mac OS X, в них Java очень старая и не обновляется, под линуксом работает с вероятностью 50% (при наличии Java правильной версии!). Плюс, я поговорил с разработчиками, они говорят под 9й версией Java не работает, потому что они что-то там выкинули.

Если раньше нужно было думать только про разные платформы, с Java нужно ещё думать про то, какая версия VM стоит, и от какого производителя (как минимум Oracle 6, 7, 8, 9 и OpenJDK; а есть ещё экзотика).

В самой Java VM баги не то, чтобы чинят, если они им не интересны. Например, на моих системах Java при запуске пытается аллоцировать 30% от общего объема, и это при том, что на современных машинах бывает и 256 гигов; ulimit при этом игнорируется. Настроить это для VM нельзя, только редактируя скрипты разных приложений. То есть под каждую новую Java программу мне нужно отредактировать их скрипт запуска и прописать максимальный объем памяти.

Кроссплатформенная джава, которая работает везде без танцев с бубном — это миф. В банке можно, если у тебя все рабочие станции имеют идентичную конфигурацию.

Davidov ★★★★ ()
Ответ на: комментарий от Davidov

Сейчас Oracle JRE 8 - стандарт для базовой установки JavaSE. А там Swing поддерживается со всеми последними достижениями инженерой мысли по обеспечению обратной совместимости унаследованного бинарного кода и аппаратному ускорению отрисовки элементов интерфейса.

iZEN ★★★★★ ()
Ответ на: комментарий от Davidov

Кроссплатформенная джава, которая работает везде без танцев с бубном — это миф. В банке можно, если у тебя все рабочие станции имеют идентичную конфигурацию.

брехня, у вас просто кривые руки

subwoofer ★★★★★ ()