Pull to refresh

Разговор с Brian Goetz о будущем Java

Reading time5 min
Views6.3K
Original author: Gert-Jan Schouten
Два дня назад на конференции в Нидерландах мне посчастливилось поговорить с Brian Goetz, делавшим доклады о будущем Java, Project Coin, параллелизме, Fork-Join и лямбда-выражениях. Я задал ему вопросы о поглощении Sun Oracle-ом, мобильной Java и о том, что за давление идёт в прессе на Oracle в последнее время. Ниже — краткое описание того, что я узнал в этот интересный день.

Для тех, кто не в курсе: Brian Goetz — Senior Java Language Architect в Oracle, работает над развитием языка и платформы Java. В последние годы особого прогресса не наблюдалось в связи с тем, что Sun практически выбыл из «игры», но с поглощением Oracle-ом наметились серьёзные перспективы, были разработаны чёткие планы выпуска (roadmap).

Начнём с того, что новая версия Java будет поделена на два релиза, Java 7 и Java 8. Java 7 будет состоять из многих вещей, который «уже сделаны по большей части», Java 8 же включит в себя «вещи, над которыми стоит ещё серьёзно поработать». Итак, план разработки таков:

Java 7:

InvokeDynamic
Project Coin
Апгрейд ClassLoader Architecture
Метод для закрытия URLClassLoader
Апгрейд Concurrency & Collections (включая Fork-Join)
Unicode 6.0
Местные улучшения
NIO 2
TLS 1.2
ECC
JDBC 4.1
Translucent & Shaped Windows
Heavyweight / Lightweight Component Mixing
Swing: Nimbus & JLayer
Update to the XML-Stack (JAXP, JAXB & JAX-WS)
Java 8:
Modularization of the JVM
Project Lambda
Annotations on Java types
Project Coin part 2
Swing JDatePicker

Примерные даты релизов: Java 7 — где-то в середине 2011; Java 8 — где-то в 2012.

Одна важная вещь отсутствует в списке, а именно мобильная Java. На мой вопрос относительно сложности разработки на Java (и запуска Java-приложений) под смартфоны и отсутствие единой платформы Brian ответил, что, несмотря на развитие технологи, самые дешёвые телефоны всё равно никак не разогнать, что и затрудняет создание единой платформы Java для десктопов и мобильных устройств. В идеале не должно быть разницы между Java SE и Java ME, они должны быть одной платформой и запуск приложений на мобильных должен быть так же прозрачен, как и на десктопах (например, Java Web Start). Oracle пока не имеет никаких конкретных планов, поэтому всё, что смог мне сказать Brian, так это «они работают над этим». На самом деле это высказывание не так негативно, как может показаться на первый взгляд. Brian пояснил, что разница между тем, как Oracle распространяет информацию, и тем, как Sun делала это, существенна. Так, Sun любила много обещать, причем большинство из этих обещаний так и не выполнялось. Oracle же не делает никаких заявлений об ещё не анонсированных в официальных планах вещах. У Oracle много очень крупных клиентов, которые принимают свои решения согласно публичной информации, исходящей от Oracle, так что они в крайней степени осторожны в своих высказываниях.

(Update): Brian прислал мне email, объяснив, что все мобильные вещи описаны в совершенно другом плане выпуска — для Java ME. Что означает, что Oracle, по крайней мере сейчас, не думает об объединении планов выпуска SE и ME. Я считаю это досадной неприятностью: сначала Sun говорила об объединении платформ (хотя это опять же может быть одно из «тех самых» обещаний); да и сам я считаю, что унификация платформ важна, так как в наше время мобильные устройства и десктопы становятся всё ближе. Если не будет прогресса в решении этого вопроса, то под угрозу попадёт один из главных принципов — «напиши один раз, запустится везде». Так что надеемся, что у Oracle есть мысли по этому поводу, даже если они и не говорят об этом публике. (/update).

Brian ещё пошутил о старой истории с маленькими ангелом и чёртиком на плечах, фигурирующей в фильмах. В Oracle ситуация другая — на одном плече у вас сидит маленький ангелочек, а на второй маленький адвокатик.

Однако оставим шутки — Brian сказал, что он приятно поражён качестом менеджмента в Oracle. Он думал, что менеджеры в Oracle — просто очень умные люди, реально знающие, как управлять компанией. На самом деле, нет особой разницы между культурами, как можно подумать было. Они хорошо обходятся с персоналом, и в первый раз за N лет Brian по-настоящему имел бюджет для найма специалистов.

На вопрос относительно давления на Oracle Brian объяснил мне, что суть в том, что Oracle просто мало чего рассказывает (или не рассказывает вообще) медийным средствам информации. Пресс-релизы тщательно обдумываются. Поэтому, многие случаи (например, отказ Apple от JVM), медиа предоставляет только одну точку зрения на вопрос, причем Oracle на это не реагирует. Люди думают, что всё плохо, прибавляют к этому соответствующую репутацию Oracle как коммерческой компании и — вуаля — вот и очередная критикующая статья на новостном сайте. Brian заверил меня, что Oracle реально заинтересован в Java, однако ставку ставит на получение денег не в краткой перспективе, а в далёкой, фокусируясь на будущем. В конце концов, что может быть лучше для Oracle кроме Java, который, по сути, сейчас один из наиболее популярных языков программирования в мире? За много лет наметился первый серьёзный прогресс.

В течение дня Brian сделал несколько докладов о параллелизме, Fork-Joun фреймворке и, что мне показалось наиболее интересным, о проекте Лямбда. Проект Лямбда — безупречен. Лямбда-выражения «транслируются» в SAM-типы. SAM-тип это типа «Один Абстрактный Метод» (Single Abstract Method), то есть интерфейс с одним методом или абстрактный класс с одним абстрактным методом. Потом Лямбда-выражения имеют тот же тип, что и SAM. Кроме этого, Лямбда-выражения могут быть использованы везде, где используются SAM сейчас, например, для ActionListener, Comparable, Cloneable, etc., делая всё это совместимым с большой частью существующего API. Я не буду углубляться особо, тем более что это займёт много времени, да и не объясню я это так понятно, как сделал бы Brian, но не могу удержаться и приведу кусок кода:
//Old-style code:
Collections.sort(people, new Comparator() {
	public int compare(Person x, Person y) {
		return x.getLastName().compareTo(y.getLastName());
	}
});

//Lamda expressions & SAM-conversion:
Collections.sort(people, #{ Person x, Person y -> x.getLastName().compareTo(y.getLastName()) });

//Better Libraries:
Collections.sortBy(people, #{ Person p -> p.getLastName() });

//Type Inference:
Collections.sortBy(people, #{ p -> p.getLastName() });

//Method References:
Collections.sortBy(people, #Person.getLastName);

//Extension Methods:
people.sortBy(#Person.getLastName);

Как вы видите, кроме Лямбда-выражений будет множество различных возможностей, которыми сможет воспользоваться программист для достижения оптимального использования от Лямбда-выражений. Лямбда-выражения сделают программирование для мультиядерных машин легче. В этом же аспекте будет очень полезен фреймворк Fork-Join.

Когда я сказал, что SAM-conversion это великолепная идея, Brian тактично указал на Joshua Bloch, который и предложил это.

Наконец, я спрашивал о Java на Apple-овских устройствах, таких как iPhone и iPad. Ответ был в той же степени загадочной, сколь и дающим надежду. Он сказал, что Ларри и Стив хорошие друзья…

На этом заканчиваем. Один день с Brian Goetz, и я должен вам сказать — сначала, когда я услышал о покупке Sun Oracle-ом, я ужаснулся, как и многие другие. Большой плохой босс, заботящийся только о деньгах, уничтожит Java. Но со временем, как начали появляться официальные анонсы и планы, я стал более позитивно смотреть на вещи. Всё ещё настороже, но уже менее предвзят. Потом, после прочтения статей о JavaOne, я начал думать, что поглощение Sun Oracle-ом будет даже полезным для Java. И, наконец, после конференции с Brian я уверен в этом. Это будет полезно для Java. Наконец-то мне предоставился шанс поговорить с тем, кто реально знает, что происходит, и теперь я абсолютно уверен, что Oracle будет стараться держать и поднимать уровень Java-платформы!
Tags:
Hubs:
Total votes 47: ↑43 and ↓4+39
Comments27

Articles