microJUG

Description
Мысли о Java.
Основной канал: @miniJUG
Буст: https://t.me/microJUG?boost
Чат: https://t.me/micro_JUG
Таблица JEP'ов: https://minijug.org/jeps.html
Advertising
We recommend to visit

Бизнес блог #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

1 month, 2 weeks 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.

#java24

2 months, 1 week ago

Начиная с Java 23, GraalVM JIT включён в Oracle JDK в качестве альтернативы другим JIT-компиляторам (C2, C1):

\-XX:+UnlockExperimentalVMOptions \-XX:+UseGraalJIT

К сожалению, он включён только в Oracle JDK, но не в OpenJDK.

#graalvm

2 months, 1 week ago

⌨️ Завтра что-то будет

4 months, 2 weeks ago

Пока вы там переходите на Java 17, в Java 24 уже появился первый JEP: Prepare to Restrict the Use of JNI
#jni

4 months, 3 weeks ago

Команда проекта Leyden сообщила, что стали доступны сборки раннего доступа Leyden JDK. Они являются результатом более чем года работы над проектом, главной целью которого является ускорение старта JVM. Разработчики просят сообщество поэкспериментировать со сборками и сообщить фидбек. На текущий момент сборки доступны под Linux/x64 и macOS/AArch64.
#leyden

4 months, 3 weeks ago

Сбер выпустил открытую среду разработки Giga IDE на базе IntelliJ IDEA/Pycharm со встроенным ИИ-ассистентом GigaCode. Среда доступна в двух вариантах: Giga IDE Desktop и Giga IDE Cloud.

Вскоре после выхода разработчик из JetBrains Юрий Артамонов обнаружил, что в кодовой базе GigaIDE содержится проприетарный код из IntelliJIDEA Ultimate.

СпёрIDE.

Update: Юрий Артамонов разобрался, что Giga IDE всё-таки не нарушает лицензию, так как использует только свободное API.
Но GigaIDE всё-таки будет у нас на карандаше ?.

#gigaide #gigacode

7 months, 2 weeks ago

? String Templates всё. В Java 23 их не будет, даже с --enable-preview.

7 months, 3 weeks ago
7 months, 3 weeks ago

Брайан Гетц написал огромное письмо в рассылку, где впервые очень подробно и с конкретными примерами синтаксиса написал, как могут выглядеть 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): ...
...
}
```

Как-то так.

#patternmatching

8 months, 2 weeks ago

Озвучено новое предложение по 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();

We recommend to visit

Бизнес блог #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