Информационный портал по безопасности » Программирование » Веб-разработка » Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?

 

Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?

Автор: admin от 31-08-2018, 11:00, посмотрело: 363

Дэвид Хэррон, автор материала, перевод которого мы публикуем сегодня, задался следующим вопросом: «Должен ли человек, работавший более 10 лет в Sun Microsystems, в команде Java SE, до последнего вздоха думать лишь о байт-коде Java и создавать экземпляры абстрактных интерфейсов?». Он задавал этот вопрос применительно к себе, и для него платформа Node.js, после Java, оказалась подобна глотку свежего воздуха. Дэвид говорит, что когда он был уволен из Sun в январе 2009 года (прямо перед поглощением этой компании Oracle), он узнал о Node.js. Эта технология его зацепила. Что значит «зацепила»? С 2010-го года он много писал о программировании для Node.js. А именно, написал несколько книг, в том числе — «Node.js Web Development», четвёртое издание которой вышло в этом году. Он подготовил множество небольших материалов о Node.js, опубликованных в интернете. Фактически, он уделил очень много времени и сил, рассказывая о платформе Node.js и о возможностях javascript. Почему того, кто раньше занимался исключительно Java, так увлекли Node.js и javascript?



Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?


это выступление Питера Маршалла, инженера Google, который занимается работой над V8, и основной задачей которого является улучшение производительности этого движка. Здесь он рассказывает о том, почему V8 перешёл с Crankshaft на Turbofan.



Машинное обучение — это область, в которой используются тяжёлые вычисления, для выполнения которых обычно пользуются языками R или Python. Машинное обучение, как и некоторые другие области, нуждаются в средствах для быстрого выполнения численных вычислений. Здесь javascript, по разным причинам, не особенно силён, но сейчас ведётся работа по созданию стандартизированной библиотеки для организации численных вычислений на javascript.



Из этого видео можно узнать об использовании в javascript новой библиотеки, TensorFlow.js. API этой библиотеки похоже на API TensorFlow для Python, она поддерживает импорт предварительно обученных моделей. Эту библиотеку можно использовать, например, для анализа видео с целью распознавания объектов, при этом все необходимые вычисления выполняются в браузере.



Вот выступление Криса Бэйли из IBM, где он затрагивает вопросы производительности и масштабируемости Node.js, в частности, при использовании конфигураций, основанных на Docker/Kubernetes. Он начинает рассказ с рассмотрения набора бенчмарков, которые демонстрируют значительно более высокую производительность Node.js в сравнении со Spring Boot. Речь идёт о пропускной способности подсистемы ввода-вывода, о времени запуска приложения и о потреблении памяти. Более того, от релиза к релизу производительность Node.js серьёзно улучшается, отчасти, благодаря улучшениям, вносимым в V8.



Здесь Бэйли говорит, что Node.js не подходит для выполнения интенсивных вычислений. Нам важно понять причину подобной рекомендации. Из-за того, что в Node.js используется однопоточная модель выполнения кода, длительные вычисления блокируют обработку событий. Я, в моей книге «Node.js Web Development», затрагиваю эту проблему, приводя три подхода к её решению:




  • Рефакторинг алгоритмов — выявление медленных частей алгоритма и его рефакторинг для достижения более высокой скорости работы.

  • Разбиение процесса вычислений на небольшие фрагменты с использованием диспетчера событий, что позволяет Node.js регулярно возвращаться к главному потоку.

  • Передача тяжёлых вычислительных задач на вспомогательный сервер.



Если производительности javascript для ваших задач недостаточно, взгляните на следующие два способа интеграции нативного кода в Node.js. Самый простой способ — это использование нативных Node.js-модулей. В наборе вспомогательных инструментов для Node.js-разработки имеется средство node-gyp, которое помогает работать с такими модулями. Вот видео, в котором демонстрируется интеграция Rust-библиотеки с Node.js.



WebAssembly позволяет компилировать программы, написанные на разных языках, в подмножество javascript, отличающееся очень высокой скоростью выполнения. WebAssembly представляет код, который выполняется внутри javascript-движка. В этом видео дан хороший обзор технологии и показано использование WebAssembly в среде Node.js.



Насыщенные интернет-приложения



Насыщенные интернет-приложения (Rich Internet Applications, RIA) были у всех на слуху лет десять назад. Тогда говорили о том, что они, реализованные на базе быстрых (для своего времени) JS-движков, способны сделать неактуальными традиционные настольные приложения.



На самом деле, эта история началась более 20 лет назад. Sun и Netscape договорились об использовании Java-апплетов в Netscape Navigator. javascript был, отчасти, разработан как скриптовый язык для Java-апплетов. Тогда индустрия надеялась на то, что на серверах будут использоваться Java-сервлеты, на клиентах — Java-апплеты. В результате разработчики попадут в замечательную ситуацию, когда и для серверов и для клиентов можно будет писать на одном и том же языке. Этого не случилось по разным причинам.



Десять лет назад javascript оказался достаточно мощным для того, чтобы сложные приложения можно было бы реализовывать исключительно его средствами. В результате появился модный тогда термин RIA, и ожидалось, что насыщенные интернет-приложения убьют Java в виде платформы для клиентских веб-приложений.



Сегодня мы начинаем видеть, как идея RIA начала приносить плоды. Благодаря Node.js стала реальной та желанная для многих ситуация, когда, и на сервере и на клиенте, используется один и тот же язык. Только теперь это javascript.



Вот несколько примеров:




  • Набор приложений Google Docs (использованный при написании этой статьи), который очень похож на типичный комплект офисных приложений, но работающий в браузере.

  • Мощные фреймворки, вроде React, Angular и Vue.js, упрощают разработку браузерных приложений, основанных на HTML, CSS и javascript.

  • Electron — это смесь Node.js и браузера Chromium. Данный фреймворк предназначен для разработки кросс-платформенных настольных приложений. С его использованием созданы такие весьма популярные и качественные приложения, как Visual Studio Code, Atom, GitKraken, и Postman.

  • Так как в Electron/NW.js применяется браузерный движок, веб-фреймворки, такие, как React, Angular, и Vue, можно использовать для разработки настольных приложений.



Технология Java, в роли платформы для разработки настольных приложений, умерла не из-за насыщенных интернет-приложений, написанных на javascript. Она умерла, преимущественно, из-за невнимания к клиентским технологиям в Sun Microsystems. В центре внимания Sun были корпоративные пользователи, которым нужна высокая производительность серверных приложений. Я видел всё это своими глазами. Настоящим убийцей Java-апплетов стала проблема в безопасности, выявленная несколько лет назад в плагине Java и в Java Web Start. Это привело ко всемирному сокращению использования Java-апплетов и Webstart-приложений.



Другие виды настольных приложений всё ещё можно разрабатывать на Java, и, как результат, IDE NetBeans и Eclipse всё ещё борются друг с другом. Однако в этой сфере применения Java наблюдается застой, и за пределами инструментов разработки существует очень немного приложений, основанных на Java.



Исключением является технология JavaFX.



Технология JavaFX, 10 лет назад, планировалась как ответ Sun на появление iPhone. Планировалось, что эта технология позволит разрабатывать на платформе Java, доступной на мобильных устройствах, приложения, обладающие насыщенным графическим интерфейсом. Это позволило бы одним махом вывести из игры Flash и средства разработки приложений для iOS. Но ничего такого не произошло. JavaFX используется до сих пор, но эта технология не видела столь масштабного взлёта, на который рассчитывали её создатели. В наши дни всеобщее внимание притягивают веб-фреймворки вроде React, Vue.js и им подобных.



В описанной ситуации javascript и Node серьёзно обогнали Java.



Вот фотография кольца Java, которое как-то раздавали на конференции JavaONE. Такие кольца содержали чип с полной реализацией Java на борту. Их, в основном, использовали для разблокировки компьютеров, установленных в вестибюле.



Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?
Кольцо Java



Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?
Инструкция к кольцу



Итоги



В наши дни разработчикам серверных проектом есть из чего выбирать. Индустрия больше не ограничена так называемыми «P-языками» (Perl, PHP, Python) и Java, так как теперь есть платформа Node.js, есть языки Ruby, Haskell, Go, Rust, и многие другие. В результате у серверных программистов теперь есть просто огромный выбор замечательных технологий.



Если же говорить о том, почему я, человек, который жил исключительно Java, перешёл на сторону Node.js, то ясно, что меня привлекла свобода, которая характерна для Node.js-разработки. Экосистема Java превратилась в обузу, а при использовании Node.js ничего такого не ощущается. Конечно, если мне, по работе, придётся писать на Java, я выполню эту задачу.



У каждого приложения имеются собственные нужды. И, безусловно, неправильно всегда и для всего использовать исключительно Node.js только из-за того, что эта платформа кому-то нравится. Выбор того или иного языка или фреймворка должен определяться техническими соображениями. Например, недавно мне пришлось работать с XBRL-документами. Так как лучшие библиотеки для работы с XBRL написаны на Python, для того, чтобы ими пользоваться, надо знать Python. Поэтому, выбирая технологии, нужно здраво оценивать реальные задачи проектов и останавливаться именно на том, что лучше всего подходит для решения этих задач.



Уважаемые читатели! Если вы, как и автор этой статьи, перешли на javascript с какого-то другого языка, или сменили какую-нибудь серверную платформу на Node.js, просим в двух словах об этом рассказать.



Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?

Источник: Хабр / Интересные публикации

Категория: Веб-разработка

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent