TL;DR
Quarkus 2.0.3, Среды разработки Docker, GraalVM 21.2, Spring Boot 2.4.9 и 2.5.3 и Scala 3.0.1.
ПРОЧИТАЙ МЕНЯ
Это выпуск 46 моего еженедельного информационного бюллетеня “Как создавать Java-приложения сегодня”. Я читаю все информационные бюллетени Java, так что вам не нужно этого делать! И это “Новости Java с улыбкой”.
Если вам нравится моя рассылка новостей, то подпишитесь на нее на Substack ! Или прочтите это на dev.to , Java Cafe или Medium . Еще лучше: поделитесь им с людьми, которые могут быть заинтересованы.
Цитата недели
В жизни есть только две проблемы:
- Ты знаешь, чего хочешь, и не знаешь, как это получить.
- Ты не знаешь, чего хочешь. “ Дэвид Аллен , автор книги/| ” Как добиться цели” , описывает большинство пользователей наших приложений.
Стендап
Большую часть прошлой недели я провел с семьей в Германии и только сегодня вернулся в Англию. Итак, это еще один короткий выпуск, такой же, как на прошлой неделе .
Еще одна моя статья появилась на InfoQ. Речь идет о Snyk “Отчет об экосистеме JVM 2021”, о котором я писал в выпуск № 41 .
реклама
ПОЛНЫЙ СТЕК JAVA В ТЕЧЕНИЕ 22 ЛЕТ
Я разработчик Java с полным стеком с 22-летним опытом работы, ищу проект в октябре 2021 года в Милтон-Кинсе, Лондон, или удаленно. Я буду работать подрядчиком или срочным сотрудником, но не буду занимать постоянные должности.
Заинтересованы? Тогда ознакомьтесь с моими примерами резюме и работ!
ОЗНАКОМЬТЕСЬ С ОБРАЗЦАМИ МОЕГО РЕЗЮМЕ И РАБОТЫ
Проверка кода
Выпуск 45 от 19 июля 2021 года: “JavaFX – Единая кодовая база для Интернета, ПК и мобильных устройств?”
Прошлая неделя Я обсуждал фреймворк пользовательского интерфейса на основе Java JavaFX. Поскольку им пользуется слишком мало людей, я порекомендовал вместо него Google Flutter. Flutter использует Dart в качестве языка программирования, но это близко к Java. В качестве доказательства я показал код Dart, который почти компилируется на Java:
class MyClass extends AnotherClass { String myString; int myInt; ListmyList = new List (); String sayHello(String name) { var feedback = "Hello, " + name; return feedback; } }
Часть, которая не компилируется в Java, – это эта строка:
ListmyList = new List ();
В Java List
– это интерфейс, а не класс, и мы не можем создать его экземпляр. Но мы могли бы, если бы вместо этого использовали класс:
ListmyList = new ArrayList ();
Фреймворки и библиотеки
Quarks 2.0: Новая миссия, Запуск Rocky
Quarks – это современный фреймворк микросервисов Java. Теперь он хочет, чтобы Java доминировала в приложениях Kubernetes. Но его запуск версии 2.0 произошел до того, как новая версия была полностью готова.
Кварки больше не являются “сверхзвуковой субатомной Явой”. Да, именно так выставлял себя этот конкурент Spring Boot до прошлого месяца . И нет, этот лозунг никогда не имел для меня полного смысла. Сверхзвуковой, как в “загружается очень быстро”? Хорошо, загрузка в 270 раз быстрее (0,016 секунды против 4,3 секунды), чем “традиционный облачный собственный стек” (wink, Spring Boot, wink) действительно кажется сверхзвуковой.
Но “субатомный”? Quarks заявляет, что объем памяти Java-приложений составляет 12 МБ, по сравнению со 136 МБ “традиционного облачного собственного стека”. Это меньше на порядок, но это не “субатомно мало”. Атом памяти (как в “самом маленьком кусочке”, и давайте оставим электроны, протоны и нейтроны вне поля зрения) представляет собой один бит. Кваркам нужно 96 миллионов из них! Как это “суббитный”, гм, “субатомный”?!
Но я предполагаю, что как один из аутсайдеров в борьбе с дуополией Spring Boot и Java/Jakarta EE вы должны кричать громче, чем другие ребята. И одна из школ мысли заключается в том, что нет плохих новостей, пока они правильно называют ваше имя…
Теперь “Quarks 2.0 продолжает миссию по превращению Java в предпочтительный фреймворк для разработки на базе Kubernetes”, как смело заявляет страница Quarkus . Забавно – я даже не знал, что Кваркс был на этой миссии! По общему мнению, Kubernetes будет методом развертывания корпоративных приложений по умолчанию. Таким образом, настоящая миссия Quarkus – “сделать Java предпочтительным серверным языком для предприятий снова “. Java был таким языком в конце 90-х и начале 2000-х, о чем нам так болезненно напоминает направленный вниз индекс Tiobe .
Теперь Java противостоит нескольким грозным противникам. Во-первых, у нас есть JavaScript/TypeScript. Запущенная в браузерах повсюду и на серверной части через Node Js, пара теперь несет в себе мантию “Пиши один раз, запускай где угодно”, которую когда-то носила Java. Затем есть динамичный дуэт Go от Google, как в “языке, на котором написан Kubernetes”, и Rust от Firefox, язык, который теперь можно использовать для написания ОС Android и ядра Linux . Оба языка пытаются привлечь на свою сторону разработчиков C++ обещанием “Выглядеть знакомо, но с меньшим количеством способов выстрелить себе в ногу”. Другими словами: это сложная задача для кварков.
И, похоже, запуск этой миссии был непростым: релизу 2.0 потребовалось три выпуска исправлений ошибок за столько недель (см. выпуски № 45 и № 44). Итак, мы снова здесь: еще один релиз для технического обслуживания с в основном исправлениями ошибок .
Уважаемая команда Quarkus: Пожалуйста, пусть ваш следующий крупный релиз продержится немного дольше. Трудно склонить разработчиков, не являющихся Quarkus/не являющихся Java, к Quarks, когда им приходится применять три выпуска исправлений ошибок за три недели только для того, чтобы ваше программное обеспечение работало хорошо. Вы знаете, “Двигайся быстро и ломай вещи” звучит не так хорошо, когда это относится к основополагающей структуре наших приложений!
Объявление о кварках 2.0.3
Инструменты
Среды Разработки Docker: Настройка IDE С Помощью Git И Docker Составить
Среды разработки Docker хотят решить проблему “безумия” разработки приложений с помощью ветвей Git. Для разработчиков Java эта плохо объясненная бета-функция Docker Desktop выглядит как решение в поисках проблемы.
Docker должен был исправить проблему “Но это работает на моей машине!”. И это работает для меня с моей, по общему признанию, простой производственной настройкой: Docker Compose с контейнерами для Java, базой данных, веб-прокси и некоторыми дополнительными инструментами. С другой стороны, я единственный, кто работает над кодом, так что же я знаю?!
Docker now говорит, что им не удалось решить эту проблему, сравнивая нашу работу с тем, что делают наши товарищи по команде в других ветках Git. Теперь Docker не стал бы упоминать об этих проблемах, если бы это также не дало нам решения. Так они поступили с “Docker Dev Environment”. А потом они объяснили это очень плохо. Я прошу вас прочитать сообщение в блоге и рассказать мне, какие идеи вы можете использовать в средах разработки Docker!
Продолжать. Я жду!
Хорошо, это VS Code. И я знаю это только потому, что я смотрел видео с конференции “DockerCon 21”, которая пыталась это объяснить. Продавать новое решение разработчикам и не сообщать им, какие идеи вы поддерживаете, – плохое начало. И с тех пор лучше на самом деле не стало. Вот мое понимание “Среды разработки Docker”.:
“Среды разработки Docker” здесь, потому что работа с ветвями Git – это “безумие Git” (их слова, а не мои): нам также нужно делиться зависимостями наших приложений и их контекстом. Совместное использование работы в ветке Git в качестве “Среды разработки Docker” создает файл Docker Compose в Docker Hub. Когда другие разработчики запускают этот файл Docker Compose, они получают содержимое ветки Git из этого файла Docker Compose, который также запускает IDE и настраивает его.
Итак, как разработчики Java, мы чешем затылки, когда читаем это.
- Наши файлы сборки Maven/Gradle уже определяют зависимости наших Java-приложений. И приложения JavaScript имеют свои собственные файлы сборки. Что добавляют сюда среды разработки Docker?
- И проблема с ветвями Git заключается не в том, чтобы получить их – проверка другой ветви Git тривиальна. Это сравнение и слияние ветвь, которая сложна. Как это станет проще, если мы получим ветку через Docker Compose?
- И что это за “контекст приложения”, который мы получаем из сред разработки Docker? Это параметры командной строки для приложений, такие как ограничения памяти или расположение конфигурационных файлов? Если это так: Иногда эти отличаются по какой-то причине – ограничения памяти различаются, когда на нашей машине всего 16 ГБ оперативной памяти, а не 64 ГБ, как у нашего коллеги. А конфигурационные файлы с секретами не должны находиться в Git и могут находиться где угодно на нашем локальном диске.
Так что, если вы используете VS Code и считаете, что это все еще интригующая функция, тогда вам понадобится Docker Desktop 3.5 (релиз в конце июня), чтобы попробовать это.
Только время покажет, является ли это поиском решения проблемы или Docker действительно что-то здесь нащупал. Для меня, как разработчика Java, на данный момент это звучит как первое. В конце концов, Docker продал свой корпоративный бизнес почти два года назад и теперь зарабатывает деньги только на решении проблем разработчиков. Таким образом, Docker стимулирует находить проблемы разработчиков, которые он может решить, реальные или воображаемые.
Объявление
Освободить
GraalVM 21.2
GraalVM делает наши Java-программы маленькими и быстрыми для загрузки – то есть после мучительно долгого процесса собственной компиляции. Oracle опубликовала еще одну небольшую версию этого инструмента.
И он любит напоминать нам, что некоторые оптимизации доступны только в enterprise edition, а не в бесплатной версии сообщества, которую использует большинство из нас. Многие изменения не влияют на Java, поэтому обозначение “незначительный релиз” вполне заслуженно.
Объявление
Пружинный ботинок 2.4.9 и 2.5.3
Как и было обещано в анонсе Spring 5.3.9 на прошлой неделе , здесь представлены два выпуска Spring Boot , основанных на этом выпуске Spring: 2.5.3 содержит ” 58 исправлений ошибок, улучшений документации и обновлений зависимостей “, в то время как 2.4.9 содержит 35 .
2.5.3 объявление , 2.4.9 объявление
Scala 3.0.1
Scala 3.0 увидела свет в мае этого года (см. выпуск №42 ). Его первый релиз для технического обслуживания вышел в начале июля. Я не смог найти анонс, поэтому я полагаю, что этот релиз является заменой версии 3.0, и мы должны его использовать.
Примечания к выпуску
О
Карстен Зильц является автором этого информационного бюллетеня. Он является полнофункциональным веб- и мобильным разработчиком с 22-летним опытом работы на Java, автором, спикером и марафонцем. Карстен получил степень магистра компьютерных наук в Дрезденском технологическом университете (Германия) в 1996 году.
Карстен работал в Европе и США. В 2004 году он стал соучредителем стартапа по разработке программного обеспечения в США. Карстен руководил разработкой продукта в течение 13 лет и ушел после того, как компания была успешно продана. Он стал соучредителем британского SaaS-стартапа ” Ваш дом в надежных руках ” в качестве технического директора в 2020 году. С 2019 года Карстен также работает подрядчиком в Великобритании.
У Карстена есть этот информационный бюллетень , веб-сайт разработчика и сайт подрядчика . Он в LinkedIn , Twitter и GitHub . Карстен также является автором в Info .
Оригинал: “https://dev.to/ksilz/how-to-build-java-applications-today-july-26-2021-3dh7”