AnyLogic 8.8.0 уже доступен для скачивания.
Вопрос не в том, стоит ли переходить на Java 11 или более позднюю версию, а в том, когда.
Время пришло. Мы переключили API («уровень языка») с Java 8 на Java 11 в AnyLogic 8.8.0. Предыдущие версии AnyLogic уже поддерживали среду выполнения моделей Java 11. Однако модели, созданные в этих версиях AnyLogic, были собраны на базе Java 8. Благодаря этому вы могли запускать свои модели, например, в более ранних версиях AnyLogic Private Cloud – до версии 2.3.0.
Сейчас произошел полный переход на Java 11 с обновлением языковых возможностей. Кроме того, новая версия AnyLogic 8.8.0 содержит улучшения для библиотек производственных систем, моделирования процессов и железнодорожной библиотеки. Полный список обновлений — в Справке AnyLogic →
Изменения в этом релизе, связанные с Java 11, будут полезны тем, кто активно использует код для создания моделей. Давайте рассмотрим эти обновления подробнее.
Улучшение синтаксиса
В Java 11 можно использовать ключевое слово var, которое впервые появилось в Java 10. Это изменение упрощает ваш код:
var list = List.of("a", "b");
вместо
List<String> list = List.of("a", "b");
Возможности для разработчиков
Простое создание коллекций
Set.of("a", "b")
вместо
new HashSet<>(Arrays.asList("a", "b"))
Преобразование коллекции в массив
Это новведение упрощает создание массива нужного типа из коллекции:
list.toArray(String[]::new)
вместо
list.toArray(new String[list.size()])
Новые методы в классе String
Они сокращают объем стандартного кода, используемого для работы со строковыми объектами, и избавляют вас от необходимости импортировать библиотеки. Некоторые новые методы:
isBlank()
— проверяет пустые строки и строки, содержащие только пробелы;
lines()
— позволяет перебирать текстовые строки с помощью Stream API, например:
var max = text.lines()
.mapToDouble(Double::parseDouble)
.max();
Строки из файлов
Теперь стало проще читать и записывать строки из файлов:
var filePath = Path.of("my_file.txt");
Files.writeString(filePath, "Some text");
var textFromFile = Files.readString(filePath);
Новые продвинутые функции
Опытные разработчики теперь могут воспользоваться удобным API классов Optional и Stream:
Optional.isEmpty(), Optional.or(alternative),
Optional.stream(), Stream.takeWhile(), Stream.iterate()
Обновите AnyLogic или скачайте новую версию с нашего сайта.