Посоны, я вам покушать принес: ссылка
(создайте кто-нибудь тэг «ежедневное java безумие» или как-то так, ибо таких постов будет еще много? Благодаря Тэйлганнеру я еще нескоро смогу)
Короче, Java9 известна тем, что большинство ее фич похоронено внутри компилятора. Там происходят эпические рефакторинги, в рассылочках идут мощнейшие вбросы говна в вентилятор по поводу системы модулей. Но ничего из этого обычный разраб в норме не увидит.
Тут мы набросали несколько вещей, все же доступных для внешнего наблюдения:
- в интерфейсах теперь можно не просто делать методы, не только статические, но еще и приватные! Авторы воспросов для собеседования «чем абстрактный класс отличается от интерфейса»
бьются в истерике
- auto closable переменные в try-with-resources можно объявлять не только внутри try, а где угодно, если они effectively final
- List.of(1, 2, 3); реализация выбирается в зависимости от параметров
- IntStream.range(1, 10).dropWhile(x -> x < 5).forEach(System.out::println)
- Optional.empty().or(() -> Optional.of(«LOR уже не торт»))
- Optional.of(1).stream().map(x -> x * 3); такая мапа будет ленивой
- Optional.empty().ifPresentOrElse(x -> System.out.println(x), () -> System.out.println(«empty»));
- CompletableFuture.clone(); завершение клона не завершает родителя, завершения родителя завершает все слоны
- completableFuture.completeOnTimeout(«нифига, в жабе изобрели таймауты!», 1, TimeUnit.SECONDS)
- StackWalker может бегать по стектрейсам без создания Exception
- нижнее подчеркивание больше нельзя юзать как идентификатор
jshell> ProcessHandle current = ProcessHandle.current();
current ==> 6349
jshell> current.pid()
$33 ==> 6349
jshell> current.info().\TAB
arguments() command() commandLine() equals( getClass()
hashCode() notify() notifyAll() startInstant() toString()
totalCpuDuration() user() wait(
jshell> current.info().command()
$34 ==> Optional[/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/bin/java]
Как всегда, нужно/ненужно, будете ли вы лепить всё на интерфейсах, и так далее? =)
Перемещено leave из talks