Бизнес блог #1
Выжимаю книги до самой сути.
? Реклама - @jaMasha
? Хотите свою книгу? Мы напишем её за вас и сделаем книгу бестселлером. Подробности в боте @Summary_library_bot
? Оставьте след в истории с помощью книги
https://expert-book.pro
Фильмы и сериалы со всей планеты. Мы знаем, что посмотреть, где посмотреть и на что сходить в кино.
Last updated 3 days, 10 hours ago
Все материалы размещены по партнёрской програме ivi.ru | All materials are posted on the partner program ivi.ru
По всем вопросам: @kuzr103
Купить рекламу: https://telega.in/c/k1noxa103
Основной канал: https://t.me/kino_hd2
Last updated 2 weeks, 2 days ago
Появился новый черновик JEP: Treat Loop Variables as Effectively Final in the Bodies of All for() Loops.
Он сделает компилируемым вот такой код:
for (int i = 1; i <= 3; i++) {
Runnable r = () \-> System.out.println(i);
}
Пулл-реквест уже создан на гитхабе и должен быть смёржен в мастер. То есть возможно мы сможем использовать эту фичу в Java 24.
Начиная с Java 23, GraalVM JIT включён в Oracle JDK в качестве альтернативы другим JIT-компиляторам (C2, C1):
\-XX:+UnlockExperimentalVMOptions \-XX:+UseGraalJIT
К сожалению, он включён только в Oracle JDK, но не в OpenJDK.
⌨️ Завтра что-то будет
Пока вы там переходите на Java 17, в Java 24 уже появился первый JEP: Prepare to Restrict the Use of JNI
#jni
Команда проекта Leyden сообщила, что стали доступны сборки раннего доступа Leyden JDK. Они являются результатом более чем года работы над проектом, главной целью которого является ускорение старта JVM. Разработчики просят сообщество поэкспериментировать со сборками и сообщить фидбек. На текущий момент сборки доступны под Linux/x64 и macOS/AArch64.
#leyden
Сбер выпустил открытую среду разработки Giga IDE на базе IntelliJ IDEA/Pycharm со встроенным ИИ-ассистентом GigaCode. Среда доступна в двух вариантах: Giga IDE Desktop и Giga IDE Cloud.
Вскоре после выхода разработчик из JetBrains Юрий Артамонов обнаружил, что в кодовой базе GigaIDE содержится проприетарный код из IntelliJIDEA Ultimate.
СпёрIDE.
Update: Юрий Артамонов разобрался, что Giga IDE всё-таки не нарушает лицензию, так как использует только свободное API.
Но GigaIDE всё-таки будет у нас на карандаше ?.
? String Templates всё. В Java 23 их не будет, даже с --enable-preview.
Вышла IntelliJ IDEA 2024.1
Брайан Гетц написал огромное письмо в рассылку, где впервые очень подробно и с конкретными примерами синтаксиса написал, как могут выглядеть member-паттерны (паттерны-члены). Напомню, что в Java сейчас есть только паттерны у записей. Member-паттерны позволят объявлять паттерны в любых классах. Рассмотрим несколько примеров:
Паттерн-деконструктор:
```
class Point {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
pattern Point(int x, int y) {
matches Point(that.x, that.y);
}
}
```
Статические паттерны:
```
class Optional {
static Optional of(T t) { ... }
static Optional empty() { ... }
static<T> case pattern(Optional<T> that) of(T t) {
if (that.isPresent())
matches of(that.get());
}
static<T> case pattern(Optional<T> that) empty() {
if (that.isEmpty())
matches empty();
}
}
```
(В примере выше case
нужен для проверки exhaustiveness компилятором)
Далее такие статические паттерны можно уже применять в switch
или instanceof
:
case Optional.of(var e): ...
case Optional.empty(): ...
Инстанс-паттерны:
```
public class Class {
...
pattern arrayClass(Class<?> componentType) {
if (that.isArray())
matches arrayClass(that.getComponentType());
}
}
```
```
package java.util.regex;
public class Pattern
...
pattern(String that) regexMatch(String... groups) {
Matcher m = matcher(that);
if (m.matches())
matches Pattern.regexMatch(IntStream.range(1, m.groupCount())
.map(Matcher::group)
.toArray(String[]::new));
}
}
```
Использование:
int[] array = {1,2,3,4,5};
Class<?> clazz = array.class;
if (clazz instanceof arrayClass(componentType)) {
...
}
```
static Pattern As = Pattern.compile("(a)");
static Pattern Bs = Pattern.compile("(b)");
...
String str = "aaaa";
switch (str) {
case As.regexMatch(var as): ...
case Bs.regexMatch(var bs): ...
...
}
```
Как-то так.
Озвучено новое предложение по String Templates. Предлагается избавиться от интерфейса Processor и оставить только StringTemplate. То есть больше не будет никаких STR."..."
, RAW."..."
и FMT."..."
, и можно будет просто писать:
System.out.println("Hello \{name}");
String s = String.format("Hello %12s\{name}");
Чтобы это стало возможным, библиотекам нужно будет добавить явную поддержку аргументов StringTemplate:
```
public class PrintStream {
...
public void println(String);
public void println(StringTemplate);
}
public class String {
...
public String format(String, Object...);
public String format(StringTemplate);
}
```
Однако пока остаётся открытым вопрос, что делать, если нужно просто интерполировать шаблонную строку в String. Похоже, что будет какой-то новый метод вроде join():
String s = "Hello \{name}".join();
Бизнес блог #1
Выжимаю книги до самой сути.
? Реклама - @jaMasha
? Хотите свою книгу? Мы напишем её за вас и сделаем книгу бестселлером. Подробности в боте @Summary_library_bot
? Оставьте след в истории с помощью книги
https://expert-book.pro
Фильмы и сериалы со всей планеты. Мы знаем, что посмотреть, где посмотреть и на что сходить в кино.
Last updated 3 days, 10 hours ago
Все материалы размещены по партнёрской програме ivi.ru | All materials are posted on the partner program ivi.ru
По всем вопросам: @kuzr103
Купить рекламу: https://telega.in/c/k1noxa103
Основной канал: https://t.me/kino_hd2
Last updated 2 weeks, 2 days ago