Порівняння Qt та HTML5

3 хв. читання

Австралійська компанія Sequality провела цікавий експеримент: один і той самий працівник витратив однакову кількість часу (по 160 годин) на розробку двох варіантів програми за одним і тим самим завданням. Відмінність полягала у виборі технологій: в одному випадку це був Qt, в іншому — HTML5 та супутні речі. Результати було узагальнено у звіті, опублікованому на сайті Qt. У цій статті я коротко перекажу основні моменти.

У фіналі перемога за сумою параметрів була віддана Qt, однак при детальному розгляді деякі моменти викликають великий сумнів. Втім, про все по порядку.

Порівняння Qt та HTML5
Qt wins

Завдання

Потрібно було створити програму для управління лінією розливу води у пляшки та наклеювання етикеток (щось типу SCADA). Малось на увазі меню для обліку та задавання різних параметрів виробничих процесів.

Особливості:

  • плаский та мінімалістичний інтерфейс користувача
  • передбачалось використання на екранах з різною роздільною здатністю (від 1024x768 з діагоналлю 15 дюймів до 2560x1600 при 10"). При цьому шрифти та іконки мали виглядати нормально на всіх пристроях.
  • можливість швидкої зміни кольорової схеми (наприклад, з «денної» на «нічну»)
  • діалоги, поп-овери, іконки, зсувна бічна панель
  • анімація затемнення, кругова анімація на деяких елементах

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

Розробник мав досвід використання Qt, однак відносно мало використовував QML. Також розробник мав навички HTML5, однак не мав досвіду з AngularJS.

Робота обох програм показана у цьому відео:

{@vimeo: https://vimeo.com/207307640}

Технології

У випадку HTML5 інтерфейс створювали за допомогою jQuery/JavaScript, CSS3 для анімації, AngularJS для загальної організації.

Для Qt варіанту для інтерфейсу використали QML. У таких програмах важливо правильно розподілити функціональність між QML-рушієм та основним кодом на C++. З огляду довгих та плутаних пояснень у звіті особисто у мене склалось враження, що розробнику не вдалось це зробити. З іншого боку, реальної реалізації бізнес-логіки не було, так що суттєво на тест це не вплинуло.

Тестування

Для перевірки програм використовувалось одне і те саме обладнання:

  • Raspberry Pi 3 (1.2GHz 64-bit quad-core ARMv8,1 GB RAM)
  • Ємнісний 15-дюймовий екран 1024x768
  • Дистрибутив Raspbian Jessie, стоковий браузер Chromium та Qt 5.7.0

Тут проявився один з сумнівних моментів: розробнику не вдалось налагодити апаратне прискорення рендерингу у браузері, але воно запрацювало для Qt-програми. В результаті остання змогла показати більшу швидкодію та кращу енергоефективність.

Результати, висновки

Обидві технології дозволяють ефективно розділити розробку бізнес-логіки та користувацькі інтерфейси. Також обидві технології дозволяють створювати якісні інтерфейси користувача під різні платформи.

Швидкодія у Qt-програми виявилась кращою.

У програм на Qt є пара додаткових фіч, недоступних за замовчуванням у HTML5:

  • віртуальна клавіатура
  • підтримка складних жестів (масштабування пальцями)
  • деякі види анімацій

Неодноразово підкреслюється, що програми, написані на HTML5, вимагають складного тестування на багатьох пристроях та браузерах. Мені це здалось ще одною маніпуляцією, тому що в даному конкретному випадку перелік пристроїв заздалегідь визначений і навряд чи хтось буде у майбутньому встановлювати оновлення на промислове обладнання.

Структура Qt-програм в цілому є простішою коли мова йде про роботу з периферійними пристроями (CAN-Bus-Value, GPIO- Pin, RS232, bluetooth, gyrometer). Однак, AngularJS може похвалитись наявністю усталеної структури проекту — те, чого традиційно немає у C++.

Нарешті, автори звіту звертають увагу на стабільність своєї бібліотеки. На відміну від веб-технологій, що можуть змінитись буквально за рік, Qt розвивається еволюційно і тому написаний код довше залишатиметься актуальним.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 649
Приєднався: 1 рік тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід