JavaScript захватил мир?

Добрый день, уважаемые читатели. Сегодня я бы хотел кратко поговорить о тенденциях разработки веб-приложений.

Итак, что же мы видим с вами в последние несколько лет? Ещё 5 лет назад javascript использовался исключительно для создания удобного UI: рюшечки, плюшечки, дизайн. Конечно, тогда уже был AJAX, и JS тоже для этого использовался.

С течением времени количество JS кода экпанециально росло. Я думаю, многие из вас видели графики, показывающие зависимость среднего размера js кода на сайте к текущему году.

И вот, в 2009-ом году, в мире появляется такая популярная сегодня штука, как Node.js — серверная платформа, использующая язык программирования JavaScript, основанная на движке V8. Нода позволила frontend-разработчикам писать код также и для сервера. Это очень круто, ведь теперь для написания полноценного приложения разработчику достаточно знать лишь один язык программирования.

Node.js, как говорит википедия и показывает реальная практика, больше ориентирована на приложения реального времени. Это чаты, веб-сервера, игры и многое другое. Что говорить, в ноде крайне удобно пользоваться технологией long-polling.

После ноды начали появляться такие инструменты, как socket.io и engine.io. Это инструменты, специально созданные для того, чтобы облегчить создание realtime приложений. Данные библиотеки позволяют работать с протоколом WebSocket на JavaScript.

Казалось бы, на этом развитие JavaScript в целом и Node.js в частности должно было бы остановиться. Ведь далеко не все веб-приложения — приложения реального времени. Ан нет, начался новый виток развития. В связи с тем, что количество JS-кода стремительно росло, его было необходимо поддерживать. А как известно, js файл размером в 1000 строк уже не просто поддерживать.

В связи с этим, появляется новый тип фреймворков, которые поддерживают паттерн программирования MV*. На сегодняшний день, данных фреймворков крайне много. Но среди всех можно выделить такие фреймворки, как Backbone.js, AngularJS, Ember.js и KnockoutJS. Кстати, AngularJS создал сам гугл.

Тема MV* фреймворков довольно большая, и она заслуживает не одной статьи. Надо признаться, что я начинающий backend-разработчик, и не написал ни одной строки с использованием MV* фреймворков. Однако крайне мечтаю попробовать написать проект на связке MongoDB, ExpressJS, AngularJS и Node.js — все новые тенхологии в одном проекте. Кстати, этот стек технологий здорово работает вместе.

Итак, уже, кажется, все люди поняли, что JS — это не только украшение UI. Однако в ecmascript 5 (стандарт JS) существует довольно много проблем, с которыми приходится ежедневно сталкиваться. Это и динамическая типизация, это и прототипное наследование вместо классического ОПП (а проблема ли это?), это и отсутствие пространство имен, это и слабое разделение приложения на модули.

Все эти проблемы многие люди пытались решить по-своему. Появился целый пласт языков, решающих их. Это и CoffeeScript — язык, представляющий разработчику более приятный синтаксис. CoffeeScript компилируется в JavaScript.

Это и TypeScript — язык майкрасофта, предлагающий разработчикам строгую типизацию, классы, поддержку visual studio и многое другое. TypeScript тоже компилируется в JavaScript.

Это и более оригинальные решения. Например, Dart, написанный гуглом.

У всех этих решений есть, как свои минусы, так и свои плюсы. Где-то довольно маленькое сообщество, где-то существует опасность, что компания-гигант закроет этот проект. Лично я считаю, что CoffeeScript можно использовать на своих проектах без опасения чего-либо.

Существует ещё одно направление развития JavaScript. Это направление связано с переносом десктопных приложений в WEB. Так, например, появилась библиотека asm.js. Идея этой библиотеки в следующем. Вам доступно лишь некоторое подмножество языка JS. Если вы напишите своё js-приложение только на этом подмножестве, то оно будет работать примерно в 2 раза медленее, чем приложение на чистом C. Это очень круто, ведь речь идёт о браузере.

В связи с появлением этой библиотеки, люди начали переносить свои наработки в web. Так, например, появился популярный игровой движок Unreal Engine 3 в вебе.

Кроме того, на JS стали переносится такие серьезные вещи из POSIT, как Bison. Правда это не имеет никакого отношения к asm.js.

Важно понять, что круто — это не перенос движка Unreal Engine 3 в веб (хотя и это круто). А круто то, что скоро будет доступен такой механизм: приложение, написанное, например, на C => автоматическая компиляция в JS => переделывание приложения под asm.js => PROFIT: сишное приложение работает в браузере со скоростью всего лишь в 2 раза ниже, чем нативное приложение.

В заключение, хочется подвести краткие итоги. Видно, что JavaScript развивается очень быстро. Тут существует сразу несколько ответвлений. Это приложения реального времени и всё, что с этим связано. Это фреймворки для удобной разработки frontend-части. И это портирование десктопных приложений/кода, написанного на языках со строгой типизацией в JS.

Категории: Программирование

Метки: