Как стать автором
Обновить

Руководство по Java 9 для тех, кому приходится работать с legacy-кодом

Время на прочтение12 мин
Количество просмотров12K
Всего голосов 14: ↑14 и ↓0+14
Комментарии30

Комментарии 30

>Благодаря модульному JDK и jlink, можно с легкостью создавать исполняемые образы и гарантированно обеспечивать приложение такой средой исполнения, в которой будет все необходимое для работы. Ранее такой процесс был чреват множеством ошибок, но современный инструментарий Java позволяет его автоматизировать – и все просто работает.

Ага, ага. Наверное поэтому выход Java 9 впервые за много лет поломал даже такие сравнительно простые вещи, как maven или gradle. Которые до этого почти не зависели от версии JDK, а просто работали. И многие разработчики откровенно побаиваются переходить на Java 9, которая во-первых, устарела еще до того, как на нее обновились (да-да, EOL даже не на носу, а уже наступил), а во-вторых, именно потому, что слишком многое поломали, а при этом обещанные преимущества почему-то далеко не очевидны.
Мне кажется, что именно из-за страха совместимости oracle и убила java, синтаксис которой отстает на десятилетия. Лично мне безразлична совместимость, если бы её потеря ознаменовалась тем фурором, который java произвела в 95. Но увы, мне кажется, что java даже это не поможет, так как его сейчас только android держит, который лет через пять прекратит свое существование. если бы пятнадцать лет назад я его рекомендовал, то сегодня бы даже не подумал бы об этом. Изучение его сегодня только усугубит-замедлит развитие программиста, а сама разработка превратить увлекательное дело в кошмар.
так как его сейчас только android держит, который лет через пять прекратит свое существование.
Откуда инфа? О том, что андроид должен «в тыкву» превратится?

Или это переиначивание популярного лозунга 90х «Windows Must Die!»… который как-то не привёл вот прям к смерти Windows через 5 лет?

P.S. О корпоративных системах я вообще молчу, там сейчас даже Cobol востребован… иначе никто бы вещи типа Cobol 2014 не выпускал…
Где-то читал, что google создает новую ОС Fuchsia, которая, к тому же заменит ещё и Android. Плюс oracle судится с google из-за технологий, что, как мне кажется, в свете недавних событий свзанных с модой судится с google, будет его только мотивировать.
В этой ОС уже работают обычные Android приложения и она в первую очередь пойдет на замену Chrome OS. Для разработчиков останется надолго Anroid Studio, Java language, Java API, Gradle, а то, что внутри мало кто видит.
Что значит «уже работают»? Вы же понимаете что это сделано для более мягкой замены одного на другое и после этой самой замены исчезнет в никуда? И это Вы думаете что в первую очередь на замену, а в google не такие простачки, как мы с Вами. Неуже ли Выдумаете, что В их планах нет пункта конкуренции с macos и windows? Неужели Вы думаете что они не видят успеха ОС windows 10, которая ставится, как на desctop, так и mobile?

Если они реально сделают это ОС, то сразу же можно забыть о android. Нет android, зачем java? Вы бы стали без android советовать своему младшему брату учить java?

И да, студия и все остальное останется, Вы наверное слишком «в лоб» интерпретируете слово «смерть», так как после замены android, все так и будет продолжаться. Все кроме одного — советовать учить java уже не будут. Хотя я уже не вижу в ней смысла, тем более, если это первый язык.
Неужели Вы думаете что они не видят успеха ОС windows 10, которая ставится, как на desctop, так и mobile?
Ммм…
2008й год: Windows Mobile владеет 12% рынка, десятки партнёров среди производителей и операторов, MS Office для мобильников существует только под неё
2018й год: разработка Windows 10 Mobile свёрнута, все партнёры от Microsoft отказались, Microsoft Andromeda существует где-то на выставках, но никому особо не интересна
Вы этот успех имеете в виду? Угробить компанию — да, не удалось, только парнёра (Nokia), но в остальном, да, это успешное разрушение всего, что у Microsoft было…

Если они реально сделают это ОС, то сразу же можно забыть о android.
Нет, если Баллмер укусит Ларри и тот сделать такую чушь, то можно будет забыть о Google. Android как раз выживет, хотя да, LG и Samsung могут по-первости наломать дров.

Все кроме одного — советовать учить java уже не будут.
Посмотрим. Хочу только напомнить, что Fuchsia — это уже не первая попытка. До этого была ставка на web-технологии и ChromeOS. ChromeOS осталась, да, а вот Web-технологии «замели под коврик» и сейчас там самые популярные приложения — от Android'а.
Вот это я лохонулся :) Не знал что windows 10 mobile свернута… Но суть не в этом, а в том что единая система, это будущие, так же как и кросплатформенные приложения.
Никому не дано предсказать будущее. Но одно можно сказать точно: отказ от Android-приложений — добром не кончится.
Это скорее единая экосистема, ибо кодовая база разная у всех версий Windows (десктопная, RT, Mobile, IoT, CE).
По-настоящему кроссплатформенной была Ubuntu Touch. Но что-то тоже не взлетела.
Нет, там как раз была попытка сделать одну кодовую базу для всего. И даже вроде как получилось. Вот только одна беда: это заняло столько времени, что оно оказалось никому не нужным.

С Ubuntu Touch произошла те же история, по большому счёту.

Судьба рынка смартфонов решалась примерно в 2008-2010м годах. И тогда у всех разработчиков было «на руках» только лишь что-то сырое и маловразумительное.

Но те, кто с тем, что было вышел на рынок и обеспечил поддержку на новых моделях (Apple и Google) выжили, а те, кто решил, что можно заставить разработчиков всё переписать с нуля 2-3-4 раза (Maemo/Meego/Tizen, Microsoft, etc) — нет.
Не было у них таких попыток. Их идея была в предоставлении универсального прикладного API, что раньше выглядело как WinRT, а сейчас — UWP.
У них это получилось настолько, что с упоминанием «UWP» гуглится аж целых 4 вакансии по Москве.
Не было у них таких попыток.
Как это не было? Вы уж врите, но не завирайтесь.

В Windows Phone 8используется новая архитектура Windows NT, которая используется в настольных операционных системах Microsoft. Из-за смены ядра устройства под управлением Windows Phone 7.x, построенной на ядре Windows CE, не могут обновиться до Windows Phone 8.

А дальше, уже в Windows 10 — да, UWP. После того, как все эти Windows CE и Windows RT с другой кодобазой отошли в мир иной.

У них это получилось настолько, что с упоминанием «UWP» гуглится аж целых 4 вакансии по Москве.
А вот это как раз и является следствием того, что смысла в них никакого: Windows на смартфонах умерла, а на десктопе есть полно других технологий, гораздо более популярных.
Где-то читал, что google создает новую ОС Fuchsia, которая, к тому же заменит ещё и Android.
Создаёт. Но тут та же история, что и у Microsoft'а: вначале была создана тяп-ляп игрушка, а потом всё, начиная с ядра, переписали.

Плюс oracle судится с google из-за технологий, что, как мне кажется, в свете недавних событий свзанных с модой судится с google, будет его только мотивировать.
Мотивировать — может быть, отказаться от Java — вряд ли. Microsoft тоже от Win32 пытался отказаться, как от тяжкого наследия прошлого: .NET, Avalon, всё такое.

В конечном итоге пришлось «сдаться» и продолжить развивать то, к чему люди привыкли.

Так что независимо от того, чем кончится история с Fuchsia, одно можно сказать точно: Android приложения и через 5 и через 10 лет в тыкву не превратятся.

Смерть «классической» Windows мало кто и заметил…
Простите… рекомендовал андроид 15 лет назад? 18-15=03. Андроид вышел в 2008. И не думаю, что в ни в 2008, ни 2009 и т.п. вы бы его не рекомендовали(наверно до версии 2.3), ибо это был ад.
Прошу прощения что внес путаницу. Я имел ввиду java.
oracle убила java? Я что-то пропустил? Или похоже вы что-то пропустили. Неужели еще встречаются люди, которые не слышали слово Hadoop?
Уже 18 лет слушаю истории о том, что Java умирает.
image
Ага. Особенно в контексте андроида хорошо зашло. Который, на мой взгляд, наоборот показал, что на java (хоть изначально и в виде странного далвика) можно сделать огромную экосистему, и написать кучу прикладного софта. Причем у Sun для desktop-ов это как раз и не получилось в такой же степени.

Удивительно, как можно видеть и читать одно и тоже, а выводы делать совершенно противоположные.
Сейчас ещё активизировались те, кто пророчат смерть Java в свете появления Kotlin (:
Ну это такое. Всё равно что пророчить смерть C в свете появления C++. Да, какое-то количество разработчиков переберётся, но они — часть той же экосистемы.
Пока жив хоть один проект на java, то java будет жив. Я не говорю что он уже умер, я говорю что он в скором времени умрет, привел аргументы, а во втором посте привел подтверждения. Но это обычные предположения, возможно, которые и не воплотятся в реальность. И к тому же, давайте быть реалистами. Если подобные события через несколько лет действительно будут иметь место, то это не будет означать, что в тот же день империя oracle развалится по кирпичику. Есть люди, которые до сих пор пишут на Smalltalk и не понимают о какой смерти идет речь. Смерть языка, это когда его перестают учить, а не писать на нем.
Вы думаете, что java живёт одним андроидом? Энтерпрайза ещё больше, и если отвалится андроид, java этого не заметит
>Смерть языка, это когда его перестают учить, а не писать на нем.

Не, ну вот например, java 6 — это где-то 2009 год, то есть почти 10 лет назад. И при этом можно найти кучу совсем не мелких проектов, которые все еще рассчитаны на работу под этой версией. То есть, на сегодня даже Java 6 не умерла совсем — хотя если вы скажете, что это не полноценная жизнь потому что нет развития, я думаю все согласятся.

>Если подобные события

Вы про какие? Отказ от андроида? Так вы поймите простую вещь — нельзя заменить андроид, и при этом забыть про множество приложений для него. Не будет совместимости — никто такую ОС не купит.
я как бекенд-разработчик вупор не вижу пользы от модульности жавы на бекенде, 9ая жава не принесла почти ничего ногово, только кучу геморроя с модулями
Аналогично. Это никогда не было востребовано в моем окружении. Если спросить нормального человека, чего он реально хочет для уменьшения сложности, он вероятно скажет — хочу чтобы установка выглядела как одна команда «поставить из репозитория». Как это и делается с Open JDK. Но на это oracle вероятно не пойдет. А модули эти для сервер сайда — одни лишние ненужные телодвижения.

>не принесла почти ничего ногово
Ну, это тоже преувеличение. Я бы не против попробовать graal, например.
Модульность это продолжение одной из самых крутых фич JVM — jar-ников. Нужна доп. либа? Скачал, закинул в classpath, и пользуешься. Теперь пришло время управлять видимостью и на этом уровне — API показываем, реализацию — нет, например. Плюс, как видно из развивающегося AOT направления и очевидного удобства сборки приложений в одну исполняемую единицу (как в go), JVM также идет к этой цели, и модульность играет в этом не малую роль. Для обычного ынтырпрайз польза как минимум в двух вещах: 1) выявление конфликтов зависимостей на этапе сборки; 2) как уже было выше, возможность поставки true standalone-приложений, даже без Java на целевой машине. Просто к этому надо привыкнуть, т.к. по сути именно тех возможностей, что дает модульность нет, пожалуй, ни у одной экосистемы разработки.
> 1) выявление конфликтов зависимостей на этапе сборки;

А оно нам нужно? Не, в смысле не само по себе, а скажем OSGI его выявляет на этапе деплоя в контейнер, то есть на самом позднем — и это более чем адекватно. А чтобы выявить на этапе сборки — нужно на этапе сборки знать все эти зависимости, а это далеко не так просто, потому что вы далеко не всегда контролируете работающее приложение.

>2) как уже было выше, возможность поставки true standalone-приложений, даже без Java на целевой машине.

Не, это конечно неплохо — но только далеко не везде нужно и тем более не везде важно.

Вот скажем IDEA поставляется вместе с Java внутри, а скажем Eclipse без — и что, кого-то это волнует? Уж поверьте, это будет последнее, что я лично стану оценивать, выбирая между двумя равноценными приложениями.

Ну и потом — true standalone-приложения это далеко не весь спектр приложений вообще. Например, тот же андроид или enterprize — две очень большие разницы, и при этом ни там, ни там эта фича на сегодня без надобности.

с java 9 и её обязательной модульностью… да, с одной стороны, полностью standalone приложения весят меньше за счет выкидывания неиспользуемой библиотеки, с другой… а с другой — множество таких приложений весят больше за счет дублирования зависимостей.


плюс поломалось все то, что работало под 8-… плюс, пишем либо под 8, либо под 9… плюс необходимость дполнительно описывать модуль и линковать...


нет, это не совсем то, что нужно. нужен менеджер репозиториев типа maven на уровне инсталляшек, вот как во всех линухах все эти rpm, apt,yast… чтобы все необходимые jar,dll,rpm или что-то--там--неважно--что загружалось и ставилось автоматически при установке софта, при этом по возможности разделяя между собой совместно используемые библиотеки, в идеале — реально загружая только diff/patch.

и, раз уж в комментариях упомянули maven, то позвольте оффтоп: ну почему сборка maven намного быстрее сборки gradle? волею судеб будучи вынужден работать за слабым и немного умирающим компом, пришлось (хочется верить, что временно) отказаться от gradle в пользу maven именно из-за скорости, а еще и потому, что gradle-демон отжирает оперативку даже когда не нужен. в итоге даже один тяжелый gradle-проект не смог собраться на таком увечном железе, наглухо подвесив всю ОСь...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий