По-сути веб-приложение это распределенное приложение, клиентская часть которого исполняется браузером, а пользовательский интерфейс описывается с помощью html (css там, javascript, вот это все).
Отсюда вывод - для того, чтобы предоставить пользователю интерфейс, который сможет выполняться в браузере, вам необходимо для его описания использовать html.
На каком языке будет написан сервер - абсолютно безразлично. Хоть на ассемблере.
Если вы откажетесь от интерфейса в браузере, и сделаете какое-нибудь десктопное приложение для работы с сервером, то и html вам не понадобится, только вот от названия "веб-приложение" останется по факту только использование протокола http.
С другой стороны, вам не обязательно описывать интерфейс на чистом html - достаточно использовать транслятор, который ваш код в итоге странслирует в html.