`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Что происходит в Java-мире?

+24
голоса

JavaDay Ukraine, ежегодная международная двухдневная конференция, организованная Java User Group Украина при поддержке титульного спонсора «EPAM Украина», собрала в Киеве более 60 докладчиков – хорошо известных в мире Java профессионалов из США, Канады, Западной Европы и других стран. Их слушали более 1000 участников.

Конференция прошла в пять потоков, разбив доклады по нескольким направлениям: Web development and Java Enterprise technologies, Core JVM platform and Java SE, Architecture & Cloud, Software engineering practices, JDK 9, Machine Learning, JVM Languages and new programming paradigms и отдельный практически поток — Hands-on Labs.

Что творится в Java-мире?

 

Юрий Антонюк: «Язык программирования Java внес существенный вклад в развитие Интернета и сегодня является одной из платформ для развития новой цифровой экономики»

Конференцию открыл глава «EPAM Украина» Юрий Антонюк. Он приветствовал участников, а также компании и организации, способствующие осуществлению этого мероприятия. По его словам, язык программирования Java внес существенный вклад в развитие Интернета и сегодня является одной из платформ для развития новой цифровой экономики. В то же время он отметил, что именно Java-сообщество является его ядром. Однако лучшей частью этого сообщества являются докладчики, которые сегодня выступят перед участниками конференции. И один из них – исполнительный вице-президент и технологический советник канадской компании Tire Юджин Роман (Eugene Roman), которого он и пригласил на сцену.

Юджин Роман является одним из инициаторов цифровой экономики, и его доклад был о том, как цифровая революция изменяет индустрию, компании, карьеру и нас. Наверное, предположил он, все присутствующие слышали о цифровой революции. Одна из особенностей, касающихся революции в Северной Америке, состоит в том, что очень немногие прилагают для этого достаточно усилий. Когда спросили у 50 аспирантов, что такое цифровая революция, только трое могли ответить на этот вопрос. На самом деле, цифровизация является процессом преобразования текста, чисел, звука, фотографий и видео в данные, которые могут быть обработаны цифровыми устройствами.

Цифровая революция в своем развитии прошла ряд фаз, начавшись от больших дорогих автономных компьютеров, таких как ENIAC, до современного цифрового мира, который завоевали небольшие недорогие цифровые устройства. Главную роль в цифровой революции играет вещь, называемая Java, - язык программирования, который не нуждается в представлении. Он господствовал в языках программирования в течение 20 лет. Сегодня имеются более новые языки программирования, которые читаются и интерпретируются намного легче, например, Python, JSON. Однако этот язык программирования является № 1 в Северной Америке среди технических специалистов.

Что творится в Java-мире?

Юджин Роман: «Главную роль в цифровой революции играет вещь, называемая Java, - язык программирования, который не нуждается в представлении»

Intel связывает будущее ИТ с искусственным интеллектом, и Java идеально для этого подходит. Взгляните на форматы устройств. Попробуйте применить к ним JavaScript. Это невозможно. Все машинное обучение базируется на Java. И столь обширная аудитория собралась на этой конференции, потому что Java является одним из наиболее используемых в мире языков программирования по простой причине. И не потому, что он выглядит, как кофе,  – символ Java имеет синий цвет. Язык создает сетевой эффект, он очень мощный, полностью объектно-ориентированный и хорошо работает при создании приложений. Он лучше, чем С++, намного лучше, чем исчезнувший Smalltalk, намного лучше, чем PL/1 и APL (APL создан в Университете Торонто и расшифровывается как A Programming Language). Это семиотический язык с высокой результативностью.

Но Java не совершенен. У него проблемы с читаемостью, и он не очень подходит для написания скриптов. В то же время Python предоставляет недостающие ссылки Java, является прекрасно читаемым кодом и может использоваться для написания скриптов для разработки продуктов.

Язык Java был разработан Джеймсом Гослингом в Лаборатории Sun Microsystems в 1992 г. и опубликован в 1995 г. Вначале он носил имя Oak по названию деревьев, росших за окном автора.

Когда вы говорите с Джеймсом, заметил докладчик, то обнаруживаете нечто необычное. Если вы встречаете его, то обнаруживаете очень своеобразный и мощный ум, который связан с сердцем. Он верил в свой труд. Что же произошло? Большинство корпоративных десктопов работает на Java, в мире насчитывается 9 млн. разработчиков на Java, большинство игр разработано на платформе Java, и сегодня это наиболее предпочитаемый язык программирования.

 И все-таки возникает вопрос, почему Java? Ответ заключается в том, что Java позволяет пользователям разрабатывать и разворачивать приложения на серверах Интернета, десктопах и наладонных устройствах. На будущее вычислений глубокое влияние оказывает Интернет, и Java имеет все основания, чтобы стать большой частью этого будущего. Java является универсальным языком программирования, это язык программирования Интернета. Достоинство Java заключается в переносимости и безопасности. Это нужно было сделать в нашем С-мире. Сегодня Java работает на всех Android-смартфонах. Однако кто разработал ПО в вашем Android-смартфоне? Ответ вас может удивить – его разработала Microsoft.

Программы на Java являются полиморфными. Если вы слышите термин полиморфное ПО, то это значит, что оно меняются в зависимости от среды, в которой оно исполняется. Его достаточно один раз скомпилировать, а дальше оно адаптируется под требования ОС, под управлением которой работает.

Разработка сложного ПО, которой занимаются инженеры-программисты, требует искусства и интеллекта, Java-искусства. Как говорил Тарас Шевченко, думайте, читайте. Это творческий процесс, требующий в то же время знаний. Нуждаетесь ли вы в процессе разработки программы указаний, что вам нужно делать в каждый данный момент? Вовсе нет. Вы нуждаетесь в процессе разработки, который базируется на более чем одной технике.

Три миллиона устройств работают на Java – компьютеры, принтеры, маршрутизаторы, мобильные телефоны, банкоматы, кредитные карты и многие другие. Это целая экосистема. Это не хорошо и не плохо. Это реальность.

По данным за 2016 г. в первую тройку наиболее используемых для программирования языков входят SQL, Java и JavaScript. В то же время глубокая экспертиза в области Java в Северной Америке является редкостью. Система образования, хотя и медленно, адаптируется, и студентов учат программированию. Эта тенденция будет продолжаться, и большинство людей будут приобретать, по крайней мере, базовые знания в программировании. Это хорошо, но в то же время большинство людей не подходят для этого. Жонглирование числами, API и т. п. является не легкой задачей. Это нормально, ведь не каждый может положить руками мяч в баскетбольную  корзину. Многие будут пробовать, многие будут изучать основы программирования, но только небольшая часть из них будут изучать, как написать цикл, не говоря о том, чтобы написать правильный цикл.

Канада соседствует с гигантом, и многие канадские ИТ-специалисты думают, что каждая хорошая идея приходит только из Калифорнии. Однако есть Киев, Львов, Днепр, Харьков и можно продолжать это перечисление дальше. Множество североамериканских компаний стартовали вне США.

Страны с лучшими программистами завоюют будущее. Проанализируем, США – это баскетбольная нация, там игроки получают миллионы долларов за то, что умеют забрасывать мяч в корзину. Канада вкладывает огромные деньги в единственный спорт – хоккей. Это нация, где хоккей является религией. Какая же страна является Java-нацией? Здесь нельзя назвать только одну страну.

Сегодня можно сказать, что ПО «поедает мир». Все больше и больше систем, которые раньше управлялись механически или людьми, становятся зависимыми от кода. Илон Маск это доказал. Мы зависим от кода, мы живем в зависимом от кода мире. В то же время в большинстве школ в США не обучают информатике. Хотя 90% родителей хотят, чтобы их дети изучали компьютерные науки, только в 40% школ обучают программированию. В то же время, согласно прогнозам, к 2020 г. на рынке будет на 1 млн. больше рабочих мест, чем количество выпускаемых студентов. Будущее – это код и приложения на вашем устройстве. И эти приложения будут написаны на одном языке – Java.

Далее выступающий отметил, что работает с украинскими программистами уже 10 лет и хорошо их знает. Они отличаются хорошим знанием английского языка, работоспособностью, честолюбием и способностями. Особенно в программировании преуспевают женщины. Он напомнил, что первым программистом была Ада Лавлейс. И в команде, которая взломала код Энигмы в Блетчли-парке, превалировали женщины. В Канаде способствуют женщинам в получении инженерного опыта. Почему? Дело в том, что мыслительные процессы у женщин и мужчин происходят по-разному. А программирование является в некотором смысле искусством.

Сегодня Java встречается повсеместно. В мире насчитывается 9 млн. разработчиков на языке Java, 3 млрд. устройств работает на Java, 97% корпоративных десктопов работают на Java, 100% проигрывателей дисков Blu-Ray также работают на Java. Это платформа №1 для разработок.

Мы развиваемся, мы учимся, мы разрабатываем, и украинские программисты имеют очень хорошие позиции, чтобы быть в первых рядах в нашем движении к будущему.

Представим еще один пленарный доклад, сделанный заместителем СЕО компании Azul Systems Саймоном Риттером (Simon Ritter), который назывался «JDK 9, миссия выполнима: что после Java?»

Он заметил, что вначале собирался рассказать только о JDK 9, но потом подумал, что более интересным будет поговорить и о том, что будет вслед за Java. Дело в том, что около шести недель назад были сделаны многочисленные анонсы, которые действительно изменили вещи в отношении того, что будет следующим после Java. Не только в терминах технологии, об этом будет говориться на данной конференции, а о том, что будет влиять на множество этих изменений и что это значит для нас как разработчиков. Прежде всего речь идет о JDK 9. Этот релиз был выпущен в сентябре, и этому предшествовало длительное время. Были многочисленные задержки, препятствия, которые нужно было преодолеть, связанные с запланированной модульностью JDK 9.

JDK 9 действительно претерпел множество изменений как больших, так и малых, но самым значительным из них явилась реализация идеи модульности. Речь скорее идет о платформе, а не о языке и не о библиотеках, которые обычно подвергаются изменениям. Множество изменений и в самом JDK 9 – внесены 55 новых особенностей. Однако сейчас речь пойдет о модульной системе как платформе JDK 9, о проекте JDK 9 Jigsaw. Что это значит? А значит это то, что библиотеки времени исполнения, которые у нас были, то есть добрые старые файлы rt.jar, которые обычно использовались, разбиты вдребезги, и причина для этого та, что …  Когда был впервые выпущен набор JDK 1, имелось около 200 классов в стандартной библиотеке классов. Со временем добавлялось все больше и больше библиотек, и JDK 8 имел 4,5 тысяч классов в rt.jar. Это замечательно, так как это значит, что теперь вы не должны писать набор классов, не должны писать классы SQL Connection. Все что вам нужно, это базовые классы. Но проблема в том, что если вы получили очень большой файл, вы должны использовать его для каждого приложения, хотя вы можете и не нуждаться во всех классах. Теперь классы разбиты на 97 модулей, и 28 из них составляют Java SE. Больше нет файлов rt.jar и tool.jar.

           Что творится в Java-мире?

      Саймон Риттер: «Самым значительным изменением в JDK 9 явилась реализация идеи модульности»

Вторая большая вещь, которая является очень значительной в модульной системе, та, что большинство внутренних API (sun.misc.Unsafe и т. д.) теперь инкапсулированы. Смысл этого в том, что когда разрабатываются классы для публичного использования, public class, они нуждаются в других классах, private class, и наиболее печально известный из них sun.misc.Unsafe. Библиотеки, которые используют sun.misc.Unsafe, не будут непременно работать прямо с JDK 9, и есть еще множество других вещей, которые имеют ряд несовместимостей в этом смысле. Что вам нужно сделать, так это посмотреть на ваше приложение, если вы собираетесь перейти на JDK 9, и вам нужно посмотреть, как оно использует внутренние API, прямо или косвенно через фреймворки или библиотеки третьей стороны.

Еще одна довольно значительная вещь та, что мы переходим от использования class path к использованию module path. Вы можете по-прежнему использовать путь класса, но идея в том, что когда вы разрабатываете модули, вы будете разбивать ваше приложение на отдельные блоки, которые вы затем передаете в путь модуля, и путь модуля дает вам большую гибкость, большую производительность, потому что он не имеет тех проблем, какие есть у пути класса.

Теперь рассмотрим совместимость, это довольно интересно. Один из сотрудников Oracle сказал, что чистые приложения, которые просто зависят от Java SE, должны просто работать. Это имеет форму точного высказывания. Но имеется небольшая проблема, потому что это значит, что приложения, которые у вас есть, могут не работать с JDK 9. Давайте посмотрим, что под этим подразумевается. Здесь важной вещью является то, что в этой модульной системе, т. е. в 28 модулях, которые составляют Java SE, имеется один метамодуль, и этот метамодуль называется Java.SE.EE, и есть шесть модулей, которые составляют этот метамодуль. В этих модулях имеются вещи, которые вы не получите, как включенные по умолчанию. В общем, метамодуль  Java.SE.EE не включен в путь модуля для Javac или JVM по умолчанию. Даже хотя они являются частью Java SE, они не включаются по умолчанию, когда вы компилируете свой код или когда выполняете его. Есть пути обхода этого, но это то, о чем вы должны быть осведомлены, когда разрабатываете приложения и когда переходите на JDK 9.

Теперь несколько подробнее о существующих приложениях, портировании и миграции. Вначале вы должны взять существующее приложение, и вы можете просто переместить его прямо в JDK 9. Вы не должны, теоретически, делать какие-то изменения, если только оно опирается на Java SE и не имеет каких-либо необычных обращений к внутренним API. Оно просто должно работать. Поэтому вы переносите все в путь класса, и вы можете запускать ваше приложение. Все, что вы передаете в путь класса, становится безымянным модулем. Таким образом вы можете портировать приложение с JDK 8 и более ранних версий на JDK 9. Простой способ переноса кода с JDK 8 и более ранних версий на JDK 9 – это перенести существующие jar-файлы из пути класса в путь модуля. Имя модуля будет тем же, что и имя jar-файла.

Одной из больших проблем была та, что вначале разработчики на JDK 9, желающие инкапсулировать все внутренние API, говорили, давайте просто выключим их. Однако с самого начала говорилось, что эти API нельзя использовать, так как их собираются убрать. Это было встречено без энтузиазма, потому что, очевидно, много людей использовало эти внутренние API, и это привело бы к нарушению корректности большого объема кода. Было принято решение о необходимости определения пути миграции между более ранними версиями JDK и JDK 9. Для этого ввели вещь, названную The Big Kill Switch. Что The Big Kill Switch позволяет вам делать, так это выключать инкапсуляцию, так что сохраняется возможность доступа к внутренним API и осуществлять его множеством разных способов.

     Новой частью функциональности, которая относится к модульности, является The Java Linker (jlink). Что он позволяет делать? Предположим, нужно создать приложение, которое не требует всех модулей JDK. jlink позволяет создать среду времени исполнения, в которой будут включаться в приложение только требуемые модули.

jlink приводит к нескольким следствиям, и они весьма важные. С самого начала в Java была заложена идея «написать один раз, выполнять везде». Если посмотреть на историю Java, то в конце 1990-х Sun Microsystems подала в суд на Microsoft за использование Java. Причина была в том, что Microsoft говорила, мы любим Java, и мы хотим сделать язык лучше. Мы собираемся изменить классы в rt.jar. Мы добавим некоторые классы в пакеты Java и исключим те, которые, по нашему мнению, там не должны быть. И это делает вещи несовместимыми. И именно поэтому Sun подала в суд на Microsoft, который она выиграла. Тогда Microsoft создала C# и .Net, но это была идея попытки управлять совместимостью. Если подумать о jlink, то проблема заключалась в том, что если вы создаете подмножество модулей, что значит, что у вас нет всех Java API, то теоретически вы теряете свойство «написать один раз, исполнять везде». Что вы можете сделать, так это сгенерировать среду времени исполнения, которая не необходимо включает все модули Java SE. Однако это все еще совместимая реализация Java. Если вы посмотрите на спецификации Java SE, как они определены JSR (Java Community Process), вы увидите, что они действительно описывают, что вещи, подобные jlink, могут создавать среду времени исполнения, которая не включает все модули, но все еще классифицируется как Java. Это действительно большое изменение для Java, потому что это очень отличатся от того, что было в прошлом. Для того чтобы образ среды времени исполнения был совместимым, он должен удовлетворять некоторым условиям. Первое, он должен включать модуль java.base, потому что все модули зависят от java.base явно или неявно. Второе, если вы включаете другие модули, то необходимо включить все транзитивные зависимости. Это существенно, потому что это значит, что с точки зрения образов времени исполнения, вы не должны включать все библиотеки, и это все еще классифицируется как Java.

Что творится в Java-мире?

                                   Стенд компании Dell EMC

Давайте теперь рассмотрим изменения в JDK, происшедшие недавно. Около трех недель перед конференцией  JavaOne был сделан ряд объявлений о будущем Java. Прежде всего измениться модель выпуска. Начиная с 2018 г., новые релизы JDK будут выходить каждые шесть месяцев – в марте и сентябре. Идея в том, чтобы сделать разработку OpenJDK и, следовательно, платформы Java более динамичной. Многие разработчики говорят, мы действительно любим Java, но есть некоторые особенности, которые было бы очень хорошо включить в язык. Но проходит длительное время для включения этих особенностей – нужно ждать 3—3,5 года. Почему бы не вносить их сразу, когда они готовы. В этом смысл более частого выпуска релизов. Далее, Oracle анонсировала, что откроет ранее закрытую часть кода JDK. Цель – устранить функциональные различия между двоичным кодом Oracle и двоичным кодом, сгенерированным из источника OpenJDK. Планируется это сделать к концу 2018 г. Разработчики смогут использовать код бесплатно, но при выводе продукта на рынок, необходимо будет приобрести лицензию. В числе изменений – нумерация версий JDK 9. Она будет иметь вид $FEATURE.$INTERIM.$UPDATE.$EMERG. Первое число $FEATURE обозначает номер версии (9, 10, 11 и т. д.), $INTERIM – бывший релиз версии и эффективно не будет использоваться, он зарезервирован для будущего использования, $UPDATE относится к безопасности, а $EMERG – заплатки безопасности. Изменится также модель долговременной поддержки релизов. Докладчик рассмотрел еще ряд специфических изменений в Java, которые здесь упускаются.

Каковы же выводы? Java продолжает развиваться. Вышел релиз JDK 9, который имеет модульную платформу, осуществлен ряд существенных изменений. Правда, этот релиз не имеет долговременной поддержки. JPMS может потребовать изменений для существующих приложений. Двоичный код JDK будет выпускаться на условиях GPL v2 с лицензией class path exception. Релизы Java теперь будут выходить чаще и, кроме этого, имеется множество идей, как улучшить Java, среди них – типы value, Java Native Interface, тип inference и много других маленьких, но полезных вещей.

Здесь не представлены другие доклады, поскольку они носили узкопрофессиональный характер.

Что происходит в Java-мире?

          Барух Садогурский и Леонид Игольник обсуждают DevOps в форме
                                       греческой трагедии

В заключение отметим, что мероприятие было поддержано 17 партнерами, среди которых такие компании, как Sigma Software, Luxoft, Infopulse, GlobalLogic, Red Hat. В этом году конференция обрела двух новых партнеров в статусе Diamond — Dell ЕМС и Škoda. В рамках конференции работала выставка, на которой были развернуты стенды партнеров. 

 Что творится в Java-мире?

 

+24
голоса

Напечатать Отправить другу

Читайте также

JSON - язык программирования??

JSON не является универсальным языком программирования, но основан на JavaScript. Однако это язык, правда, для обмена данными в текстовом формате.

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT