Тенденции в Web и Java-разработке в 2020 году

Логотип компании
Тенденции в Web и Java-разработке в 2020 году
Период бурного развития веба позади, и сегодня мы наблюдаем стабилизацию фреймворков, подходов и самого языка JavaScript. А это означает, что инвестиции в образование становятся более осмысленными и долговременными.

Тенденции Web-разработки

Период бурного развития веба позади – сегодня мы наблюдаем стабилизацию фреймворков, подходов и самого языка JavaScript. А это означает, что инвестиции в образование становятся более осмысленными и долговременными.

Среди Web-фреймворков сформировалось три лидера: React, Angular и Vue. Популярность React подстегивается добавлением в фреймворк хуков – чего-то среднего между простотой компонентов и сложностью Redux. Хуки – многообещающая технология, реально упрощающая код. Однако мои личные симпатии на стороне Angular: думаю, это самый целостный и зрелый фреймворк, позволяющий решать даже очень сложные задачи. При этом количество вакансий на Angular лишь немногим меньше, чем на React.

Что касается Vue.JS, то его перспективы пока под вопросом. Вокруг него много хайпа, он проще React и Angular, но серьезные компании предпочитают решения, за которыми стоят Facebook (React) или Google (Angular), разработке китайских специалистов – вакансий на рынке пока что немного.

Если же говорить о самом языке JavaScript, то его бурное развитие тоже позади – сейчас он меняется не так быстро. Главный тренд состоит в повсеместном переходе к использованию TypeScript – причем не только в Angular, который исходно базировался на TypeScript, но и в React. Когда-то Facebook пыталась продвинуть собственную альтернативу TypeScript – язык Flow, однако, не сильно отличаясь от TypeScript, он был значительно менее зрелым и так и не смог стать популярным. Реактисты оценили преимущества типизации, но отдали предпочтение отлично себя зарекомендовавшему TypeScript. У типизации два больших преимущества: валидация кода во время написания и хорошо работающее автодополнение в среде разработки. И то и другое здорово повышает продуктивность.

Еще одна вещь, о которой многие мечтают, – возможность писать код для фронтэнда, не транслируя его в JavaScript. И, в самом деле, JavaScript стал «ассемблером веба», притом, что совершенно для этой роли непригоден – в нем даже типизации нет (те типы, что есть в TypeScript, просто стираются на этапе компиляции). Получается, что высокоэффективный код, чтобы работать в браузере, транслируется в JavaScript, теряя производительность.

Появился и проект WebAssembly, который нацелен на выполнение эффективного байт-кода в браузере вместо JavaScript. То есть потенциально мы получаем возможность писать код, скажем, на си, транслировать его в байт-код WebAssembly и подключать к JavaScript, сильно повышая производительность. Однако бенчмарки показывают, что высокой эффективности добиться не удается: код в WebAssembly работает быстро, но сама связка JavaScript-WebAssembly создает накладные расходы, перекрывающие преимущества более низкоуровневого кода.

Вероятно, когда-нибудь можно будет разрабатывать приложения полностью на WebAssembly, но пока что у кода WebAssembly нет, скажем, доступа к DOM, а, следовательно, его возможности ограниченны.

Тенденции Java-разработки

Мир Java уже давно меняется не так стремительно, но в этом и преимущество – ваши инвестиции в изучение Java будут актуальны достаточно долго. Сейчас Oracle запускает новую версию каждые полгода: последняя – Java 13, притом, что большинство проектов работает с Java 8, а то и более древней. Но по количеству новых фич это скорее минорные релизы и в Java 10–13 не так уж много нового.

Главные тренды в разработке на Java – переход к реактивному асинхронному программированию и рост популярности Kotlin как удобной и мощной альтернативы Java, а также рост популярности микросервисов и переход к облачной архитектуре. Последний уже не очень новый, но продолжает захватывать мир промышленной разработки: все больше приложений переезжает в облачную инфраструктуру благодаря низкой стоимости владения и возможности быстро и просто масштабироваться по мере необходимости. Благо сейчас большой выбор облачных решений и готовых облачных сервисов от Amazon, Google, Microsoft и «Яндекса».

Еще один яркий тренд – развитие технологий искусственного интеллекта – связан прежде всего с успехами нейронных сетей глубокого обучения. По всей видимости, нас ожидает взрывной рост интеллектуальных сервисов, построенных на распознавании образов, работе с текстами на естественных языках, обработке фото- и видеоматериалов, а также рекомендательных сервисов и систем принятия решений. Сегодня многие облачные платформы предлагают интеллектуальные системы для распознавания образов, речи, перевода, синтеза речи и других подобных задач, и, поскольку качество таких сервисов обещает расти, они найдут более широкое применение в реальных задачах. Таким образом, не исключено, что в скором времени уже не понадобится вводить информацию в компьютер с помощью клавиатуры и мышки – мы будем просто общаться с системой на человеческом языке.

В свою очередь, нейронные сети становятся особенно эффективны, если обучены на больших наборах данных, а это достигается благодаря прогрессу в области big data. Так, появилась возможность собирать очень большие объемы данных, хранить их, отбраковывать некорректные, обрабатывать и получать обучающие выборки. Все это поддерживается современными инструментами, написанными на Java (Hadoop) или Scala (Spark). Самой популярной библиотекой машинного обучения остается гугловский TensorFlow (Питон, С++).

Наконец, еще один тренд – рост популярности систем обмена сообщениями. По сути это продолжение тренда реактивного программирования, но в глобальном распределенном формате, когда контрагенты расположены не внутри одной виртуальной машины, а распределены по сети.

В обычной жизни мы тоже наблюдаем переход к мессенджингу   предпочитая не звонить, а отправлять сообщения: звонок отрывает нас от текущих дел, а на эсэмэску можно ответить, когда будет удобно. То же самое в бизнес-системах: если обычный вызов метода – как звонок по телефону, то использование брокеров сообщений – как отправка письма или СМС. То есть позволяет более равномерно распределять загрузку систем и отвечать на запросы по мере возможности (для чего имеются очереди сообщений).

Самые известные системы мессенджинга – RabbitMQ и Kafka, и, похоже, их популярность продолжит расти. Тогда как классический JMS начнет терять свои позиции.

Опубликовано 18.12.2019

Похожие статьи