Рубрики
Без рубрики

Как создавать Java-приложения сегодня: #55

TL; Доктор Рон Пресслер из Oracle считает, что большинству разработчиков Java или их боссов это безразлично… Помеченный java, bpf.

TL;DR

Рон Пресслер из Oracle считает, что большинство разработчиков Java или их боссов не заботятся о деньгах, Spring 6 поддерживает модули Java, Adoptium OpenJDK Java 17, Micronaut 3.0 и Spring Boot 2.5.5 и 2.4.11.

ЧИТАЙ МЕНЯ

Добро пожаловать в мой еженедельный информационный бюллетень “Как создавать Java-приложения сегодня”! Я прочитал все информационные бюллетени Java так что тебе не нужно этого делать! И это “новости Java с улыбкой”.

Если вам нравится моя рассылка новостей, то подпишитесь на нее в Substack ! Или прочтите это дальше dev.to , Java Cafe или Medium . Еще лучше: поделитесь им с людьми, которые могут быть заинтересованы.

Цитата недели

Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям. “Человеком”, о котором Мартин Фаулер , светило нашего ремесла , говорит здесь, может быть “я через шесть месяцев”. Или, с возрастом, “я на следующей неделе”.

Стендап

Моя статья в InfoQ о Spring 6 и Spring Boot 3 вышла в прошлую пятницу. В нем VMware подтвердила то, о чем я впервые сообщил здесь еще в мае: Spring 6 поддерживает модули Java! Подробнее читайте ниже.

В среду я выступил с докладом на Java Форуме в Штутгарте . Неизбежно, это был вопрос “Как разработчики Java должны создавать интерфейсы для Интернета, мобильных устройств и настольных компьютеров сегодня?”. Я уже выступал с этим докладом на четырех конференциях и трех семинарах, но я все еще нахожу способы сделать его лучше. Выступление было записано заранее, поэтому я просто пришел, чтобы ответить на вопросы в течение примерно 20 минут. Мило!

реклама

22 ГОДА JAVA С ПОЛНЫМ СТЕКОМ ДЛЯ НАЙМА В ФЕВРАЛЕ СЛЕДУЮЩЕГО ГОДА

Я разработчик Java с полным стеком с 22-летним опытом работы: Spring Boot, Angular, Flutter. Я ищу проект в феврале 2022 года в Милтон-Кейнсе, Лондон, или удаленно. Я буду работать подрядчиком или срочным сотрудником, но не буду занимать постоянные должности.

Заинтересованы? Тогда ознакомьтесь с образцами моего резюме и работы!

Ознакомьтесь с образцами моего резюме и работы

Книжные закладки

Ява

Рон Пресслер из Oracle Считает, Что Большинство Разработчиков Java или Их Боссов Не Заботятся О Деньгах

Рон Пресслер из Oracle говорит, что люди на Java 8 теряют деньги каждый день. Я в основном не согласен и излагаю свои причины. Как ты думаешь?

Рон Пресслер является техническим руководителем проекта Loom в Oracle, который заново изобретает потоки в Java (см. выпуск № 49 ). В ходе панельной дискуссии InfoQ, посвященной будущему Java, он сказал следующее:

Цифры, которые у меня есть, говорят о 60% и снижаются на 8. Я ожидаю, что к концу года большинство будет на 9 с плюсом. Если вы не компания, которая не заботится о деньгах, вы можете остаться на 8. Если вам не все равно, я предлагаю вам переехать, потому что вы теряете деньги каждый день на 8. Вы просто ждете аппаратного обеспечения и поддержки. Затраты, которые вы сэкономите за счет обновления, почти наверняка очень быстро затмят стоимость самого перехода.

Если я правильно понимаю Рона, он говорит: Java 8 использует аппаратное обеспечение менее эффективно, чем Java 9 или более поздняя версия. Вот почему затраты времени разработчика на переход на Java 9 или более позднюю версию быстро окупаются. Большинство из миллионов разработчиков Java все еще используют Java 8, поэтому эти разработчики или их боссы не заботятся о деньгах.

Я в основном не согласен. Но почему меня это волнует? И почему а стоит ли тебе это делать?

Если Oracle не знает, почему мы переходим на новые версии Java, они, вероятно, не будут делать правильные вещи, чтобы сделать Java более привлекательной. И если Java не станет более привлекательной, то наша жизнь как разработчиков Java станет сложнее: борьба Java идет не между Java 8 и Java 17. Это нечто среднее между Java и другими языками, такими как JavaScript или Python. Посмотрите на индекс TIOBE для Java или вопросы о переполнении стека – линия Java снижается уже много лет…

Итак, позвольте мне обратиться к аргументам Рона.

Прежде всего, большинство из нас пишут программное обеспечение Java, чтобы создавать ценность для бизнеса для наших клиентов (предоставляя нашим пользователям функции, которые они запрашивают, увеличивая доход, делая наших заинтересованных лиц счастливыми и тому подобное), не для экономии затрат. Поэтому, если ценность для бизнеса, которую мы можем получить за X дней разработчика, превышает затраты, которые мы можем сэкономить за это время, то мы, вероятно, добавим ценность для бизнеса вместо, скажем, перехода на новую версию Java.

Во-вторых, нам нужно потратить здесь время разработчика, чтобы сэкономить на затратах на оборудование. С того места, где я сижу, время разработчика со временем становится дороже , в то время как стоимость оборудования снижается . Так что, возможно, переход от Java 8 становится дороже и со временем экономит меньше денег.

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

В-третьих, давайте проверим доказательства, представленные Роном в подтверждение его предположения: “Затраты, которые вы сэкономите за счет обновления, почти наверняка очень быстро превзойдут стоимость самого перехода”.

(в поисках…)

О, подождите, есть нет : Рон не представил никаких доказательств того, сколько будет стоить обновление Java или сколько это сэкономит. Калькулятор возврата инвестиций (ROI)? Несколько тематических исследований? Единичное тематическое исследование? Неподтвержденные факты? Что-нибудь? Нет.

Да, я знаю, что немного несправедливо ожидать такого уровня детализации в панельной дискуссии. Но он поднял этот вопрос. Рон представляет Oracle, владельца Java, поэтому я придерживаюсь более высоких стандартов. И Рон в прошлом делал огульные заявления без доказательств, такие как ” не многим людям нравится ” реактивное программирование.

И последнее, но не менее важное: может быть, просто может быть, миллионы разработчиков Java посмотрели на Java 9 и более поздние версии и сказали: “Нет, это не стоит того, чтобы беспокоиться”. Я имею в виду, что с Java 9 прошло четыре года, так что времени для расследования было предостаточно. Эта точка зрения может быть правильной, может быть неправильной, но Oracle не помогает обучать нас, разработчиков Java!

Просто посмотрите на бесконечный раздел “Что нового” в примечаниях к выпуску Java 17. Почему Oracle не может предоставить нам краткое описание наиболее важных функций, как это сделали все остальные ? На веб-сайте Oracle Java есть это краткое описание . Но мы, разработчики Java, не ищем пресс-релиз на странице Java Oracle . Мы заглядываем в документацию Java .

И почему Oracle не может предоставить нам краткое описание того, что изменилось с Java 8 по Java 17? Это блоггер может .

Теперь наши боссы не читают примечания к выпуску. Если Oracle хочет, чтобы мы обновились до Java 17, почему бы им не дать нам что-то, что убедит наших боссов? Знаете, что-то вроде калькулятора рентабельности инвестиций или тематических исследований? Я думаю, что руководство Java в Oracle должно быть в состоянии оценить рентабельность инвестиций при переходе на Java 17, когда проснется в 3 часа ночи! Если они не могут привести веские аргументы в пользу Java 17, то кто может?!

И почему примечания к выпуску не подлежат действию ? Давайте возьмем var ключевое слово, которое мы получили в Java 10: var; . Для начала, это не упоминается в разделе “Что нового” Java 10. Это только в разделе ” Обновления языка” . Действительно?

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

Оракул нам ничего не говорит.

Послушайте, сегодня широко используются только три, может быть, четыре Java IDE – IntelliJ, Eclipse, Visual Studio Code и, возможно, Netbeans. Так почему же Oracle не сообщает нам, если и как автоматически преобразовывать все подходящие объявления переменных в var объявления с помощью этих IDE? Прошло 3,5 года с момента выпуска Java 10.

Мне, конечно, потребовалось некоторое время, пока я не нашел, как это сделать в IntelliJ: щелкните правой кнопкой мыши файл/папку, “Проанализировать – выполнить проверку по имени …”, затем найдите “опущено”, выберите правило “Тип локальной переменной может быть опущен”, затем выберите все файлы/переменные, которые вы хотите изменить, и, наконец, нажмите кнопку “Заменить существующие типы на var” справа.

Подводя итог, я не согласен с утверждением Рона о том, почему люди не переходят с Java 8: сначала мы создаем ценность для бизнеса, оборудование дешевеет, в то время как разработчики дорожают, он не представил никаких доказательств затрат или экономии, и Oracle не помогает убедить нас, разработчиков или наших боссов.

Согласен? Не согласен? Тебе все равно? Дайте мне знать в Твиттере: @karsilz

Статья

Фреймворки и библиотеки

Spring 6 Поддерживает Модули Java

В мае я наткнулся на комментарий к проблеме , где Юрген “Спринг” Холлер раскрыл “введение определений информации о модуле в кодовой базе”. Я предположил, что это может означать, что весна 6 позволит нам создавать приложения с Модули Java (см. выпуск № 35 ).

Оказывается, я был прав:

Ожидается, что Spring Framework 6 действительно представит дескрипторы информации о модуле для всех модулей core framework с минимальными требуемыми зависимостями от основных модулей Java, что позволит инструменту JDK jlink создавать пользовательские образы среды выполнения для настроек Spring.

VMware не объявила об этом на Spring One, но они подтвердили это в вопросах и ответах, которые были в моей статье о Spring 6 и Spring Boot 3 .

Прежде чем вы слишком увлекетесь Java-модулями – возможно, их слишком мало, слишком поздно для Java-модулей. Почему?

Из того, что я знаю о модулях Java, у них есть два преимущества для нас, разработчиков Java: они обеспечивают более сильное разделение нашего кода, чтобы мой класс не мог получить доступ к чему-то в вашем классе, чего он не должен. И ссылка создает уменьшенную пользовательскую версию среды выполнения Java для доставки с нашими приложениями Java.

Теперь мы можем получить разделение без Java-модулей с помощью Arch Unit . Конечно, ошибка компилятора в Java-модулях лучше, чем неудачный модульный тест с Arch Unit. Но в отличие от Java-модулей, Arch Unit работает со всеми Java-программами.

И, похоже, мир Java остановился на том, как сделать Java маленькой во время выполнения: с помощью виртуальной машины Graal и собственных программ. Возможно, Java-модули могут сделать GraalVM еще лучше, но GraalVM, похоже, отлично подходит для приложений без Java-модулей.

Но есть одна общая черта Java-модулей с GraalVM: мы не знаем, работают ли с ними наши библиотеки Java. Вот что VMware сказала о модулях Java весной:

Могут быть ограничения с дополнительными сторонними библиотеками и определенными стратегиями конфигурации, поэтому до сих пор неясно, насколько популярным станет такое явное использование модулей среди пользователей Spring.

Моя информационная статья

Освободить

Адаптация OpenJDK Ява 17

Проект, ранее известный как AdoptOpenJDK, имеет Java 17, готовый для Windows, Linux и Mac. Это все еще незавершенная работа . Например, на момент написания этой статьи установщики Linux, похоже, отсутствовали.

Объявление

Микронавт 3.0

Когда мы говорим о новых фреймворках Java, которые бросают вызов Spring Boot и Jakarta EE, мы обычно говорим “Кварки и микронавты”. Кварки публикуют релизы так, как будто завтрашнего дня не будет. Что ж, теперь очередь микронавтов. Так что же нового?

Micronaut 3 переключил свою реактивную структуру с RxJava 2 на Project Reactor. Классы больше не наследуют аннотации автоматически, только те, у которых есть @Inherited . Аннотации в пространстве имен javax.annotations были заменены, и в инверсии управления (IoC) были внесены уточнения. Фильтры сервера теперь вызываются ровно один раз, даже если возникают ошибки.

Это еще не все, поэтому, пожалуйста, ознакомьтесь со статьей InfoQ или примечаниями к выпуску для получения подробной информации.

Статья

Пружинный ботинок 2.5.5 и 2.4.11

Как и было предсказано на прошлой неделе выпусками весенних данных (см. выпуск № 54 ), Spring Boot 2.5.5 и 2.4.11 увидели свет на прошлой неделе. Мы получаем 41 исправление ошибок, улучшения документации и обновления зависимостей с 2.5.5 и 32 из них с 2.4.11 .

Объявление 2.5.5 , объявление 2.4.11

О

Карстен Силц является автором этого информационного бюллетеня. Он является полнофункциональным веб- и мобильным разработчиком с 22-летним опытом работы на Java, автором, докладчиком и марафонцем. Карстен получил степень магистра компьютерных наук в Дрезденском технологическом университете (Германия) в 1996 году.

Карстен работал в Европе и США. В 2004 году он стал соучредителем стартапа по разработке программного обеспечения в США. Карстен руководил разработкой продукта в течение 13 лет и ушел после того, как компания была успешно продана. Он стал соучредителем британского стартапа SaaS ” Ваш дом в надежных руках ” в качестве технического директора в 2020 году. С 2019 года Карстен также работает подрядчиком в Великобритании.

У Карстена есть этот информационный бюллетень , веб-сайт разработчика и сайт подрядчика . Он в LinkedIn , Твиттер и GitHub . Карстен также является автором в Info .

Оригинал: “https://dev.to/ksilz/how-to-build-java-applications-today-55-4pj2”