19-12-2019 03:11

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

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

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

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

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

BenQ анонсирует ультраяркий Full HD проектор SH960Вам будет интересно:BenQ анонсирует ультраяркий Full HD проектор SH960

Стартовал предзаказ на 42 мм-овые Huawei WATCH GT 2Вам будет интересно:Стартовал предзаказ на 42 мм-овые Huawei WATCH GT 2

Что касается 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 начнет терять свои позиции.

разработка ПО

Поделиться: