java.lang.String — один из наиболее часто используемых классов в Java приложениях. Не удивительно, что мы пытаемся его улучшать и микро- и макро-оптимизациями. В докладе будут освещены вопросы рациональности, подходов к реализации, практических граблей, с которыми сталкиваются разработчики JDK, пытающиеся ничего не сломать в огромной экосистеме, а также чем эта подковёрная деятельность грозит простым пользователям.
В этом докладе мы посмотрим на две грядущие фичи в JDK 9, направленные на оптимизацию строк: Compact Strings (http://openjdk.java.net/jeps/254), сжимающие строки с однобайтовыми символами, что улучшает футпринт и даже общую производительность; и Indify String Concat (http://openjdk.java.net/jeps/280), использующий магию invokedynamic для конкатенации строк, позволяющий подкручивать реализацию конкатенации без рекомпиляции программ.
![Алексей Шипилёв, Oracle](http://2016.jbreak.ru//images/talks/shipilev@1x.jpg)
Алексей Шипилёв, Oracle
Работает над производительностью Java около 10 лет. За это время он успел позаниматься Apache Harmony в Intel, затем перешёл в Sun Microsystems, а потом и в Oracle, где сегодня работает над Sun/Oracle JDK, главным образом над изменениями, связанными с производительностью JVM, библиотек классов, фреймворков и приложений. Разрабатывает и поддерживает под-проекты OpenJDK: jmh, jcstress, jol. Работает в экспертных группах, связанных с формализацией, тестированием и производительностью concurrency.