TGViewer
Channel Public Channel
Mama Java

Mama Java

@mama_java

Канал о разработке на Java и всём, что ее окружает
Subscribers
35
Photos
0
Videos
0
Links
5
Recent Posts 8 shown
Post #14 388
🍑 В Java 19 в сентябре 2022 добавили несколько интересных штук (опять в режиме превью)

- Паттерны записей (o instanceof Point(int x, int y) {})
- В паттерн-матчинг switch - охранные паттерны && были заменены на условия when (было case Integer x && x > 0 -> …; стало case Integer x when x > 0 -> …;) и null матчится категорически только в ветке case null
- Виртуальные потоки
- Foreign Function & Memory API

🥭 В Java 20 в марте 2023 содержала в основном различные улучшения всего, что было добавлено в Java 19.

🥝 В сентябре 2023 вышла Java 21, в ней из заметного:
- Наконец добавили в основную версию виртуальные потоки, паттерны записей и паттерн-матчинг switch,
- Добавили (естественно как превью) строковые шаблоны (например: String str = STR."\{x} is the capital of \{y}";) и безымянные переменные и паттерны (чтоб не придумывать имена),
- Также теперь (в режиме превью) можно запускать программы с методами main(), которые не являются public static и у которых нет параметра String[] args
- Также были сделаны изменения относительно сборщика мусора, шифрования и прочие.

🍒 Следующая версия - Java 22 - вышла в марте 2024 года, и вот что интересного там добавилось:

- Безымянные переменные включили в основную версию (переменная, которая обозначена автором как неиспользуемая и обозначаемая символом подчёркивания (_))Также был сделан ряд прочих изменений, не столь заметных.
- Стало возможным в режиме превью писать инструкции кода в конструкторе перед явным вызовом конструктора (super() или this())
- Теперь можно запускать программы, состоящие из нескольких исходных файлов Java (это развитие фичи из Java 11 - где стало можно запускать исходные файлы без компиляции >java Main.java - теперь Main может содержать вызовы методов других классов и это не приведет к ошибке).

Вот, собственно, и вся история!

Хотя, погодите, на носу сентябрь, а это значит, что буквально через месяц нас ждет новая Java 23 🥳.

Судя по всему, все новшества там ожидаются в режиме превью - в частности добавятся примитивы в шаблоны instanceof и switch и появится возможность импорта целого модуля (import module M).

Но это уже совсем другая история!

🍀
  • 👍 5
Post #13 228
☕️ Продолжаем нашу историю эволюции Java.
(https://vk.com/@-226906615-i-esche-pro-versii-java-11)


Итак: «… чем сердце успокоится»😄
Начиная с Java 11 в сентябре 2018, у релизов появилось четкое расписание - теперь каждый март и сентябрь разработчиков поджидает что-то новенькое.

🍏 Итак, чего же заметного мы получили в Java 11:
- Появилась возможность запускать исходные файлы Java без предварительной компиляции (прям вот так: java Main.java)
- Поддержка var в параметрах лямбда-выражений (вроде такого: <…>.map((var txt) -> txt.toUpperCase()).<…>)
- В Java.util.Collection появился toArray, принимающий аргумент IntFunction (вот так: String[] arr = list.toArray(String[]::new))
- Новые методы для работы со строками и со строками в файлах
Также из интересного - в Java 11 появился Java Flight Recorder (JFR) - инструмент для сбора диагностических данных из работающего приложения Java и No-Op сборщик мусора курильщика Epsilon (который на самом деле ничего не собирает, но зато применим для имитации ошибок нехватки памяти).

🍎 Следующая версия Java 12 - вышла в марте 2019, в ней было добавлено еще несколько новых функций для строк(indent, transform в классе String) и файлов (mismatch в nio.file.Files), но, пожалуй, самое заметное - это поддержка Unicode 11, а так же новый синтаксис switch со стрелочками (правда, пока в формате превью).
Также из интересного: добавился новый форматировщик чисел - CompactNumberFormat: из коробки можно получить, например, из числа 5500 текст "5.5 тысяч".

🍋‍🟩 В сентябре 2019 вышедшая Java 13 пополнила арсенал разработчиков следующей классной штукой (опять же пока в формате превью): появились текстовые блоки (забываем про переносы в стиле +"\n" - пишем тройные кавычки и наслаждаемся жизнью).

🍐 В марте 2020 вышла Java 14, и вот что замечательного мы получили:
- Обновленный switch стал доступен в основной версии
NullPointerExceptions теперь точно сообщает, кто конкретно null
- В формате превью: паттерн-матчинг для instanceof (то есть: if(obj instanceof String str) {})
- В формате превью: записи (класс, записанный как public record Person (String name, String surname) {} - содержит уже конструктор, геттеры, toString и hashCode)
Также был сделан рад изменений, касательно JVM и управления памятью и добавлен экспериментальный сборщик мусора Z.

🍊 Java 15 в сентябре 2020 содержала следующие основные изменения:
- Текстовые блоки (те, что с тройными кавычками) из Java 13 перенесли из превью в основную версию
- Sealed классы (например, public abstract sealed class Pet permits Cat, Dog - только Cat и Dog могут создавать подклассы Pet) - пока что в формате превью

🍋 В Java 16, вышедшей в марте 2021, было сделано следующее:- Перенесли в основную версию паттерн-матчинг для instanceof и записи (records) из Java 14,
- Добавили toList() в Stream - чтоб покороче писать было (вместо .collect(Collectors.toList() стало .toList())- Сделали небольшие изменения в DateTimeFormatter
Ну и всякое по мелочи😄.

🍓 В сентябре 2021 вышла Java 17 с долгосрочной поддержкой (LTS), и вот что интересного там произошло:- Sealed классы из Java 15 перенесли в основную версию
- Добавили паттерн-матчинг для switch (типа такого: switch(obj) {(…) case Cat c -> "A Cat";…) ) - как водится в формате превью.

🍉 22.03.2022 вышла Java 18, в которой из заметного стало: использование кодировки UTF-8 по умолчанию (раньше использовалась кодировка операционной системы), а также файловый HTTP-сервер с простой настройкой и минимальным функционалом (jwebserver).
VK И еще про версии Java (11…) Продолжаем нашу историю эволюции Java.
  • 👍 2
Post #12 280
В прошлой серии мы окунулись в далекое прошлое Java, теперь взглянем на недавнее.
Итак: "что было еще".
🐁На дворе стоял март 2014 года, недавно отгремела Сочинская олимпиада, в кинотеатрах вовсю рекламировали Интерстеллар и Стражей Галактики, а доллар был по 35. И вот в один из самых обычных дней - 18 марта 2014 мир увидел многими любимую великую и ужасную прекрасную Java 8.🐁Эта версия замечательна тем, что там появилось столько классных фич, что жизнь разработчиков буквально разделилась на до и после! 🥲 На самом деле, сейчас многие компании продолжают использовать именно Java 8 (а некоторые даже на нее только переходят с более старых версий). И, да, это минимальная версия Java, которая необходима для работы в большинстве компаний.
Вот что важного появилось в этой версии:
- лямбда-выражения и функциональные интерфейсы (например: Runnable newRunnable = () -> System.out.println("Hello new world!");)
- ссылки на методы (например: AbstractHttpConfigurer::disable, System.out::println) - метод по умолчанию для интерфейсов (раньше все методы интерфейсов были public abstract, теперь же, обозначив метод ключевым словом default, можно написать его реализацию - его получат все классы, реализующие этот интерфейс)
- операции в функциональном стиле для коллекций, более известные как Stream API (теперь то, что выполнялось раньше в цикле, теперь можно написать в одну строку, например так list. stream().filter(name -> name.startsWith("a")).map(String::toUpperCase).sorted().forEach(System.out::println);)
- Optional - обертка объекта, который может быть null (долой Null Pointer Exception!)
- аннотации типов и повторяющиеся аннотации - новый API для работы с датой и временем (java.time)
- Base64 декодер (java.util.Base64)
По подробному разбору каждого пункта написаны уже наверное сотни статей и книг, поэтому останавливаться подробно я здесь на этом не буду. Добавлю только, что помимо улучшений языка, была сделана масса улучшений, касающихся безопасности, JavaFX, IO и NIO и многопоточности.

🐁Следующая версия, Java 9 (первая не LTS версия), была выпущена через 3.5 года - 21 сентября 2017 года. И вот что она нам принесла:
- в коллекциях у List, Set и Map появился метод of(…) создающий неизменяемый объект соответствующего типа (например: List<Integer> list = List.of(1, 2, 3, 4);)
- в Stream API добавились новые методы dropWhile, takeWhile, ofNullable и iterate.
- в интерфейсах стало можно создавать private методы - добавилась API Reactive Streams - для асинхронной обработки данных в потоковом стиле
- HTTP/2-клиент - до этого встроенная поддержка Http в Java была довольно низкоуровневой, а также имела множество проблем.Также в этой версии появилась такая замечательная штука как JShell - теперь, чтобы выполнить какой-то кусочек кода на Java, вообще не нужно создавать классы, main-ы, чего-то там компилировать и вообще шевелиться! 🐁Нужно лишь вызвать в командной строке jshell и вуаля! - можно выполнять команды на Java и моментально видеть результаты: jshell>System.out.println("Ничоси!"). В JShell можно определить также и классы, и функции, и переменные. 😎

🐁Спустя всего полгода после выхода Java 9 - была выпущена уже следующая версия, Java 10. Там было сделан ряд улучшений относительно сборщика мусора - в частности появился Garbage-Collector Interface, интерфейс сборщика мусора в исходном коде JVM, позволяющий легко интегрировать альтернативные сборщики мусора, а также сборщиком мусора по умолчанию стал G1.Но фактически наиболее заметное для разработчиков изменение заключалось во введении ключевого слова var, которое позволяет не указывать тип переменной (например, var car = "Porsche"). Нет, Java все еще (и слава богу!) статически типизирована - var применяется только к переменным внутри методов, а компилятор определяет тип во время компиляции.

Начиная с Java 10 скорость выхода новых версий увеличилась - теперь последняя версия меняется раз в полгода, а отличия между версиями перестали быть настолько существенными. Но об этом - в следующей части!
🍀
  • 👍 2
Post #8 230
...Мне посчастливилось работать на проекте, где использовалось все многообразие версий Java, поэтому первый пост я хочу начать с немного более пристального рассмотрения этих самых версий.
Итак: "что было".
Официальным днем рождения Java считается 23 мая 1995 года. Однако до официальной версии Java 1.0 было еще далеко - она была выпущена только 23 января 1996 года. Затем примерно раз в 2-3 года выходили новые версии. Поначалу им даже давали прикольные названия - например:
1.1.4 - Sparkler (бенгальский огонь 🎇),
1.1.5 - Pumpkin (тыква 🎃- релиз был вскоре после Хэллоуина),
1.3.0 - Kestrel (пустельга 🐦),
1.3.0_01 - Firefly (светлячок🪲),
1.3.1 - Ladybird (божья коровка 🐞),
1.4.0 - Merlin (имелся в виду не волшебник из легенд о короле Артуре, а североамериканский мелкий сокол - дербник 🦅),
1.4.1 - Hopper (сокращение от grasshopper - кузнечик 🦗)
1.4.2 - Mantis (богомол; наверное, подразумевалось, что версия - отвал башки😆; видимо, так и есть - в 2024 году все еще встречаются проекты, где она до сих пор используется, хотя сама Java 1.4.2 вышла в 2003 году 😱).
Начиная с Java 1.5, в официальной индексации решили отбросить 1, и после Java 1.4 вышла уже Java 5.0. Так что де-факто мы с вами все еще используем Java 1, кто бы что ни говорил! Кстати аж до Java 9 - команда 'java -version' показывала эту major-версию: "Java(TM) SE Runtime Environment (build 1.8.0_191-b12)".

🐯 Версия 5.0 (2004) получила имя Tiger (тигр). В ней в языке появилось много всяких полезных штук, которые сейчас кажутся настолько повседневными, что непонятно как без них жили древние люди:
- обобщения (было ArrayList - стало ArrayList<Integer>),
- перечислимые типы (enum),
- аннотации (например, @ Override),
- методы с неопределённым числом параметров (varargs, например, print(String… words))
- автоматическое преобразование между примитивными типами и обертками (писать Integer g = 4 и int f = new Integer(4) - стало легально!),
- foreach ( который for (T t : array) {}).

🐎 В 2006 году в официальной индексации решили отбросить и minor-версию в названии продукта (к слову сказать, в 5.0 она уже не использовалась, а все обновления обозначались через u (update) - например, 5.0u10 ). Java 6, вышедшая в этом году - получила имя Mustang (мустанг). В этой версии много чего пофиксили и улучшили, добавили JConsole в JDK, но с точки зрения именно языка мало что поменялось: появились интерфейсы коллекий Deque, BlockingDeque, NavigableSet, NavigableMap, ConcurrentNavigableMap и их реализации и, собственно, на этом все.

🐬 Следующая версия Java 7 - Dolphin (дельфин) вышла аж через через 4.5 года после предыдущей. После этого фантазия разработчиков на имена иссякла и новые версии языка больше не получали красивых названий. А зря, это было очень мило🥲! В этой версии было много изменений, касающихся JVM, добавились пакеты ввода-вывода файлов - java.nio.file, java.nio.file.attribute и java.nio.file.spi, алгоритм сортировки слиянием в коллекциях заменили на Timsort, а сам язык получил следующие фичи:
- в switch стало возможно использование String
- try-with-resources (например,так: try(FileOutputStream output = new FileOutputStream(path)){…})
- множественная обработка исключений (типа такого: catch (IllegalArgumentException|SecurityException | IllegalAccessException e))
- оператор <> (diamond operator) - было так: ArrayList<Integer> arrayList =new ArrayList<Integer>() - стало так: ArrayList<Integer> arrayList = new ArrayList<>()
- подчёркивания в числовых литералах для лучшего восприятия больших чисел (было так: int speedOfLight = 299792458; а стало так: int speedOfLight = 299_792_458;)
- двоичные литералы (например, int binaryNum = 0b111; - 0b - показывает, что используется двоичное число)

Следующая версия Java - 8 была выпущена еще через 3 года - в 2014 году. С тех пор прошло 10 лет, но на самом деле, многие компании до сих пор продолжают работать именно с этой версией Java. Но об этом - в следующей серии!
🍀
  • 👍 1
Post #7 195
👋Здравствуй, приятель, рада приветствовать тебя на своём канале, посвященном языку Java, программированию, информационным технологиям и прочим занятным вещицам.

Несколько слов об авторе канала. Меня зовут Вероника Алексеевская, я профессионально занимаюсь разработкой на Java с 2016 года. На момент публикации данного поста являюсь заместителем руководителя группы разработки в крупном банке.
vk
linkedin
сетка
github
🍀
  • ❤ 1
Post #1
Channel created

About this channel

How can I read @mama_java without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Mama Java: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Mama Java have?
Mama Java (@mama_java) has 35 subscribers on Telegram, refreshed roughly every 30 minutes.
Does Mama Java know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →