Тем не менее, в зависимости от сценария приложения или требований, настольные разработки во многих случаях по-прежнему имеют больше смысла. В частности, особого внимания заслуживают десктопные приложения на JavaScript.
Что такое десктопное приложение
Десктопные приложения — это программы, предназначенные для работы на компьютерах и использующие системные ресурсы для выполнения своих функций. Эти программы работают поверх операционных систем, таких как Linux, Microsoft Windows и macOS. Некоторые популярные примеры настольных приложений включают Microsoft Office, VLC Media Player, Windows File Explorer и Activity Monitor в macOS.
Доступ к настольному приложению и его использование — простой процесс. Но вам сначала необходимо загрузить программное обеспечение с официального сайта. Например, если вы хотите использовать Microsoft Excel, вам придется искать Microsoft Office на официальном сайте Microsoft. Оттуда вы можете загрузить программное обеспечение на свой компьютер и установить его.
Разработка десктопных приложений— это процесс создания программы для локального запуска на компьютерных устройствах. Для создания настольных продуктов можно использовать такие языки программирования, как Java, C# , C++ , Python, Ruby и JavaScript.
Преимущества десктопных приложений
Некоторые из преимуществ разработки десктопных приложений по сравнению с веб-приложений включают в себя.
Доступ к собственным функциям
В отличие от веб-приложений, которые не могут получить доступ к собственным функциям и аппаратным ресурсам компьютера вообще или только в ограниченной степени (например, через соответствующие веб-API или подключаемые модули браузера), это ограничение не распространяется на настольные программы. Классический пример — доступ к файловой системе. В то время как пользователи в веб-приложении (через файловый API) могут использовать только те файлы, которые они явно выбрали, в десктопном варианте они имеют доступ ко всей файловой системе.
Никаких усилий в отношении версий браузера
При разработке веб-приложений значительная часть работы обычно посвящается теме совместимости браузера. Сюда входят следующие вопросы.
- Какая функция поддерживается каким браузером?
- Какая версия браузера?
- Какие особенности или ошибки есть в каком браузере?
Конечно, полифиллы могут помочь в этом контексте. Это библиотеки, которые эмулируют функции, которые браузер не поддерживает. Инструменты кросс-браузерного тестирования, которые автоматически тестируют веб-приложение в различных сочетаниях браузеров, версий и операционных систем, также являются огромным подспорьем при разработке, однако эта тема совершенно неактуальна для настольных приложений.
Не требуется доступ в Интернет
Веб-приложения требуют подключения к Интернету. Хотя это можно в значительной степени свести к минимуму с помощью инструментов, ориентированных на офлайн, таких как сервис-воркеры, IndexedDB и веб-хранилище, обычно гораздо проще разрабатывать десктопные приложения, чтобы они также работали без доступа в Интернет.
Нет необходимости во времени на загрузку
Сложность веб-приложений и количество интегрированных сторонних библиотек и фреймворков влияет на время, необходимое для первоначального запуска приложения. Если процесс загрузки занимает много времени, это отрицательно сказывается на удобстве использования. Механизмы кеширования браузера противодействуют этому, но эта проблема даже не возникает для десктопных приложений.
Производительность при большом пользовательском трафике
В случае с веб-приложениями высокий доступ может негативно сказаться на производительности. Для хорошо разработанного десктопных приложений количество одновременно активных пользователей (по крайней мере, для UI-кода) не имеет значения. Только тогда, когда настольное приложение интегрирует внешние (веб-сервисы), они могут превратиться в узкое место.
Почему JavaScript — лучший язык для современных десктопных приложений
Помимо перечисленных выше аспектов, у веб-приложений много преимуществ перед десктопными, в том числе очень важное: кроссплатформенность. Это возможность приложения работать на всех операционных системах, включая мобильные (Windows, Linux, macOS, Android). ОС, iOS), при условии наличия соответствующей среды выполнения в виде браузера. Усилия, затраченные на создание платформо-независимых настольных приложений, и необходимые знания в области программирования, соответственно, высоки по сравнению с ними.
Именно здесь вступают в игру фреймворки NW.js и Electron: они сочетают в себе современные веб-технологии с возможностью их использования для программирования настольных приложений. Оба фреймворка используют схожий подход, но при ближайшем рассмотрении обнаруживаются различия.
NW.js — это фреймворк с открытым исходным кодом для создания настольных приложений на HTML, CSS и JavaScript. Проще говоря, веб-разработчики, знающие «только» HTML, CSS и JavaScript, могут использовать NW.js для создания кроссплатформенных настольных приложений. Библиотека генерирует файлы приложений для операционных систем Windows, Linux и macOS из единой кодовой базы. Поэтому десктопные приложения на JavaScript будут всегда более универсальными среди остальных.
Что дает фреймворк Electron
Второй популярный фреймворк для разработки десктопных приложений на JavaScript — Electron. Изначально GitHub использовал проект как часть разработки редактора кода Atom, но сделал его общедоступным в виде отдельного фреймворка в 2013 году.
В принципе, Electron похож на NW.js. Ничего удивительного: один из первых разработчиков NW.js, ранее работавший в Intel, теперь продолжает работать над Electron для GitHub. Однако между NW.js и Electron есть одно ключевое различие, которое важно понять разработчикам. В то время как в NW.js Node.js и WebKit используют один контекст JavaScript, в Electron существует несколько контекстов: один для фонового процесса, который управляет приложением и по одному для каждого окна приложения.
Еще одно отличие в использовании Electron для разработки десктопного приложения заключается в определении начальной точки программы. NW.js, как уже было сказано, это файл HTML, а в Electron — файл JavaScript. Кроме того, различается способ интеграции WebKit (или Chromium).
Кроме того, в отличие от Electron, NW.js позволяет компилировать код JavaScript в собственный код, чтобы предотвратить отправку исходного кода вместе с приложением в удобочитаемой форме. Однако скомпилированный результат работает примерно на 30 процентов медленнее. Кроме того, NW.js имеет встроенную программу просмотра PDF и предварительный просмотр печати. С другой стороны, с Electron вам придется переключиться на внешние библиотеки, такие как pdf.js. Подробное сравнение обоих фреймворков можно найти, в том числе, на TangibleJS.
Электрон различает основной процесс и процесс рендеринга. Основной (обычно содержащийся в файле main.js) представляет собой точку входа для приложения Electron и управляет жизненным циклом приложения. Например, из основного процесса можно получить доступ к родным компонентам, таким как файловая система.
С другой стороны, есть процессы рендеринга, которые по существу представляют окно (браузера) в приложении Electron и содержат комбинацию HTML, CSS и JavaScript. Следовательно, у вас есть доступ к DOM соответствующего окна в процессе визуализации (или соответствующему коду JavaScript). Вы также можете обратиться оттуда к Node.js API. Таким образом, в приложении может быть несколько процессов визуализации, но только один основной процесс.
Вывод
JavaScript считается мастером на все руки среди языков программирования. Между тем, он также хорошо зарекомендовал себя в области настольных приложений. Основное преимущество использования этого языка в разработке десктопного приложения заключается в возможности кроссплатформенности на уровне веб-продуктов. С помощью NW.js и Electron относительно легко создавать независимые от платформы настольные приложения. А базовые технологии HTML, CSS и JavaScript облегчают начало работы.