This media is not supported in your browser
VIEW IN TELEGRAM
😁14💯3❤1😢1
🔊Флюэнт спикеры английского, как слышно?
Теперь можно похоливарить про джаву в полный голос - с ИИ.
Вон та штука по ссылке ниже👇🏻👇🏻👇🏻 слышит вашу речь и отвечает как живой собеседник🤖
https://www.sesame.com/research/crossing_the_uncanny_valley_of_voice#demo
Я пообщался 5 минут для того что бы понять что в 90% случаев эта ИИ-собеседница неотличима от кожаного человека.
Как думаете, сколько лет еще будет жива профессия репетитора по английскому?..🥲
Теперь можно похоливарить про джаву в полный голос - с ИИ.
Вон та штука по ссылке ниже👇🏻👇🏻👇🏻 слышит вашу речь и отвечает как живой собеседник🤖
https://www.sesame.com/research/crossing_the_uncanny_valley_of_voice#demo
Я пообщался 5 минут для того что бы понять что в 90% случаев эта ИИ-собеседница неотличима от кожаного человека.
Как думаете, сколько лет еще будет жива профессия репетитора по английскому?..🥲
Sesame
Crossing the uncanny valley of conversational voice
At Sesame, our goal is to achieve “voice presence”—the magical quality that makes spoken interactions feel real, understood, and valued.
😱6🔥5❤1
Ты ещё вручную пишешь
Тогда погнали знакомиться с
Пример 1
❌ДО:
✅ПОСЛЕ:
В первом случае еслиптичка NPE.
В таких случаях
—
Пример 2
❌ДО:
✅ПОСЛЕ:
Меньше кода, больше читаемости - балдежная инвестиция в кодовую базу проекта, ну??
—
Пример 3
❌ДО:
✅ПОСЛЕ:
Все мы любим тернарки, "но как друга" - обычно они усложняют читаемость кода. Objects и здесь забирает пальму первенства - и позволяет задать дефолтное значение, если сама переменная оказалась null.
В общем в нашей ковбойской кобуре теперь появился Objects - он хорош и его надо применять. Жжем огоньки и лепим сердечки если было полезно🔥❤️
Кстати, а какие утилитные классы делают проще твою жизнь?
if (obj != null) и боишься NullPointerException, как кот - пылесоса?😿 Тогда погнали знакомиться с
java.util.Objects — утилитным классом, который спасает от рутинных проверок и делает код чище. Глянем пару примеров:Пример 1
❌ДО:
if (user.getName() != null && user.getName().equals("Феофан")) {
// ...
}✅ПОСЛЕ:
if (Objects.equals(user.getName(), "Феофан")) {
// ...
}В первом случае если
user.getName() окажется null — вылетит В таких случаях
Objects.equals("John", user.getName()) — безопаснее.—
Пример 2
❌ДО:
if (input == null) {
throw new IllegalArgumentException("тыб хоть значение какое положил, собака сутулая");
}✅ПОСЛЕ:
Objects.requireNonNull(input, "тыб хоть значение какое положил, собака сутулая");
Меньше кода, больше читаемости - балдежная инвестиция в кодовую базу проекта, ну??
—
Пример 3
❌ДО:
String name = user != null ? user.toString() : "Unknown";
✅ПОСЛЕ:
String name = Objects.toString(user, "Unknown");
Все мы любим тернарки, "но как друга" - обычно они усложняют читаемость кода. Objects и здесь забирает пальму первенства - и позволяет задать дефолтное значение, если сама переменная оказалась null.
В общем в нашей ковбойской кобуре теперь появился Objects - он хорош и его надо применять. Жжем огоньки и лепим сердечки если было полезно🔥❤️
Кстати, а какие утилитные классы делают проще твою жизнь?
🔥18❤6👍3🙏1
Не опоздай, Java 25 уже здесь.
И наконец-то это не очередной соевый и скучный релиз без значимых изменений - 25ке есть чем удивить и порадовать нас. LTS-версия как никак.
👇 Смотрим нововведения:
1. новичок в пакете java.lang - RandomExcuse
Добавлен вспомогательный класс RandomExcuse для генерации сообщения о причине возникновения исключения:
Примеры сообщений исключения: "Раньше работало", "Это ошибка кэшей", "Jenkins-агент тупит".
2. Ключевое слово bless
Позволяет JVM "благословить" переменную — она больше не сможет принимать null-значение, а объект внутри нее не сможет выбрасывать исключения при вызове методов. Пример использования:
3. @LegacyCode
Новая аннотация
4. Модуль ИИ в JVM и конструкция please {}
Крик отчаяния! Для борьбы с выгоранием разработчиков и для упрощения написание кода - синтаксически некорректный фрагмент достаточно обернуть в конструкцию please {}.
На этапе компиляции JVM AI:
- автоматически дополнит и починит код
- выведет мотивирующую цитату
- включит случайный lo-fi плейлист
- закажет горячий какао для разработчика в сервисе доставки его региона
А что из фичей вы хотите в следующем релизе? Я соберу ваши хотелки из комментов и лично напишу в Оракл открытое письмо с предложениями😄
И наконец-то это не очередной соевый и скучный релиз без значимых изменений - 25ке есть чем удивить и порадовать нас. LTS-версия как никак.
👇 Смотрим нововведения:
1. новичок в пакете java.lang - RandomExcuse
Добавлен вспомогательный класс RandomExcuse для генерации сообщения о причине возникновения исключения:
throw new RuntimeException(new RandomExcuse());
Примеры сообщений исключения: "Раньше работало", "Это ошибка кэшей", "Jenkins-агент тупит".
2. Ключевое слово bless
Позволяет JVM "благословить" переменную — она больше не сможет принимать null-значение, а объект внутри нее не сможет выбрасывать исключения при вызове методов. Пример использования:
bless databaseConnection;
3. @LegacyCode
Новая аннотация
@LegacyCode над классом добавляет легкую сериализацию кода этого класса в PDF-формат для монохромной печати листинга кода на бересте или листках пергамента.4. Модуль ИИ в JVM и конструкция please {}
Крик отчаяния! Для борьбы с выгоранием разработчиков и для упрощения написание кода - синтаксически некорректный фрагмент достаточно обернуть в конструкцию please {}.
//До JVM AI:
please {
int x equals "10"
}
//После JVM AI:
int x = 10;
System.out.println("Ты отличный разработчик. Я горжусь тобой.");
На этапе компиляции JVM AI:
- автоматически дополнит и починит код
- выведет мотивирующую цитату
- включит случайный lo-fi плейлист
- закажет горячий какао для разработчика в сервисе доставки его региона
А что из фичей вы хотите в следующем релизе? Я соберу ваши хотелки из комментов и лично напишу в Оракл открытое письмо с предложениями
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14🔥4🤯2❤1👍1
в рабочую субботу законодательно запрещены посты на серьезные темы.
поэтому вот вам веселый подгон - https://neal.fun/password-game/
спорим что вы не сможете создать себе пароль на этом сайте по всем правилам?😁
поэтому вот вам веселый подгон - https://neal.fun/password-game/
спорим что вы не сможете создать себе пароль на этом сайте по всем правилам?
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤1🤯1
3 из 25 - это не про лото и не про биатлон.
Для тех кто пропустил релиз Java 25 - смотрим топ-3 новых синтаксических фичи:
1. короткий мейн и класс IO
Это буквально весь код который надо будет написать в файле Example.java для простого hello-world приложения.
Т.е.:
- не надо объявлять класс
- вместо
2. гибкие конструкторы с возможностью вызова кода до super()/this()
Дергать до super()/this() можно только "безопасные" операции, т.е. те, которые не связаны как-то с родительскими полями/методами/состоянием (все-таки раз
3. примитивы в instanceof и switch
Раньше нельзя было использовать в свиче/инстансоф примитивы, а теперь можно. Удобно что можно передать переменную (как тут value) и пощупать-узнать какая она, вне зависимости от того примитивная или ссылочная, без лишних приседаний.
🔥 - крутяк, тащу в прод
🗿 - спасибо, не впечатлен, живу дальше с родной Java 8
Для тех кто пропустил релиз Java 25 - смотрим топ-3 новых синтаксических фичи:
1. короткий мейн и класс IO
// в файле Example.java
void main() {
IO.println("Привет пацаны");
}
Это буквально весь код который надо будет написать в файле Example.java для простого hello-world приложения.
Т.е.:
- не надо объявлять класс
- вместо
System.out.println можно будет использовать класс IO. sout у нас никто не отнимет, обратная совместимость все-таки, но альтернатива появилась2. гибкие конструкторы с возможностью вызова кода до super()/this()
class TestUser {
private final String login;
TestUser(String login) {
// раньше нельзя было писать код ДО явного super()/this(), как например эту проверку
if (login == null || login.isBlank()) {
throw new IllegalArgumentException("Логин не может быть пустым!");
}
super();
this.login = login;
}
}Дергать до super()/this() можно только "безопасные" операции, т.е. те, которые не связаны как-то с родительскими полями/методами/состоянием (все-таки раз
super еще не был вызван). Какая задача решается этой фичей в примере выше? Представьте что до этой фичи Java вы не могли запихнуть валидацию параметра конструктора ДО вызова всей цепочки конструкторов родительских классов. Но если параметр херня то зачем тратить силы jvm на создание всех родителей? Надо быстрее и дешевле - дать возможность отфутболить исключение сразу. В реал жизни все шире чем валидация аргументов до super(), но это один из кейсов.3. примитивы в instanceof и switch
Object value = 42;
switch (value) {
case int i when i > 100 -> System.out.println("Огромное число: " + i);
case int i -> System.out.println("Обычное число: " + i);
case String s -> System.out.println("Это строка: " + s);
default -> System.out.println("Хрен пойми что: " + value);
}
Раньше нельзя было использовать в свиче/инстансоф примитивы, а теперь можно. Удобно что можно передать переменную (как тут value) и пощупать-узнать какая она, вне зависимости от того примитивная или ссылочная, без лишних приседаний.
🔥 - крутяк, тащу в прод
🗿 - спасибо, не впечатлен, живу дальше с родной Java 8
🔥11🗿2