elizarov


Блог Романа Елизарова


Previous Entry Share Next Entry
JavaOne 2012: Общие впечатления и темы
elizarov

В этом году на JavaOne есть три основные продвигаемые темы: Java 8, Java FX, и Java Embedded. Java 8, который выйдет во второй половине 2013 года, будет самым радикальным обновлением языка Java за всю его историю. Поддержка в языке замыканий (Project Lambda) не только существено расширяет язык, но и позволяет программистам писать программы в совершенно новом, ранее недоступном (неудобном) в языке Java, функциональном стиле. Java будет последним из широко-распростренненых языков, в который будет добавлена поддержка замыканий (после C# и С++). Тем самым можно официально сказать, что эра императивного программирования завершается, и начинается новая эра функционального программирования и декларативной обработки данных. Подробнее об этом я напишу позже.

Java FX достиг в своем развитии одновременно несколько важных точек. Во первых, в Java FX 2.2 наконец появилось API для произвольного рисования (Canvas) и манипулирования изображением на уровне отдельных пикселей. А во вторых, Java FX тепепь инегрировано в JRE и доступно во всех основных операционных системах (Windows, Mac OS, Linux, Solaris) и архитектурах (x86 и ARM). Это всё вместе переводит Java FX из плоскости эксперимента с непонятным будующим, в плоскость реальной графической библиотеки, подходящей для создания серъезных и сложных графических приложений. Теперь это полноценная замена библиотеки Swing, которая способна его заменить во всех бизнес-приложениях где сейчас используется Swing. Теперь уже официально можно сказать что Swing это "legacy", и новые проекты по созданию "богатых клиентских приложений" не должны начинаться на Swing.

Oracle начала активно продвигать Java и Java FX в область встроенных систем. Здесь на JavaOne можно воочию наблюдать киоски, которые работают на дешевых и простых ARM микро-компьютерах, под управлением операционной системы Linux. На Java FX для них написано красивое приложение, позволяющее просматривать расписание конференции. Просто, удобно, быстро и дешево. На выставке можно посмотреть на разные варианты встроенных систем, увидеть примеры приложений для индустриального мониторинга и управления. Обещается, что Java Embedded станет полноценным подмножеством Java SE, одновременно становясь еще более компактным. Java Card, в свою очередь, вписывается в эту картину, становясь подмножеством Java Embedded, и работая уже совcем в жестких условиях ограничений по ресурсам и по безопасности, когда невозможно доверять даже владельцу устройства.


  • 1
Лямбды они сделают, а вот джинерики только могила исправит.

Кстати, заметно что Oracle теперь намного более тщательно относится к проработке всех новых существенных добавлений в язык и в платформу.

Надо же, Java FX выжил. Только сомневаюсь, что из него что-то выйдет

Ну это смотря чего от него ждать. Oracle, в отличие от Sun, намного реалистичней смотрит на ситуацию. Никакого противопоставления с HTML5, CSS и JS больше нет. HTML5 победил в области web приложений и никто не пытается поставить это под вопросом. Java Plugin мертв (как и Flex) и больше никому не нужен. На Web можно писать интерактивные приложения без всяких плагинов.

JavaFX займет свою нишу богатых приложений для desktop-а (ну и может немного продвинутся в embedded). Фактически он заменит Swing. Это вполне себе приличная ниша, в которой создают ПО множество компаний (включая Devexperts). Oracle с ними и работает, и будет работать.

1. в функциональном стиле не получится. нет (?) поддержки хвостовой рекурсии ни в компиляторе ни в вм. ничего linq образного нет (?). к тому же если лямбда (не читал) сделана как синтакс шуга (компилируется в локальный анонимный класс), то это вообще задник (привет гигабайтным permgen)... в сухом остатке - "у нас потрясающие новости - мы теперь поддерживаем конструкуию for(;;)"

2. про генирики сказали, абстрактные интерфейсы - facepalm.

3. javafx - вопль отчаянья. чем скорее спишут в убытки тем всем проще. разрабатываться на нем будут только проекты спонсируемые ораклом.

4. инеграции наработок типа aparapi (или чего-то более качаственного) нет не то что в проектах, даже в мыслях

5. достаточно посмотреть презентации с nextlang2012 (john rose там тоже был - представлял java vm) чтобы оценить масштабы отставания явы

в целом печальненькая картинка :)

к #1 забыл добавить - карирования (или как это правильно по-русски) тоже нет

1. Ну, для любителей функциональщины есть Scala. Только, увы, для массовой разработки она не слишком пригодна.
В чем особый смысл linq я не совсем понимаю (в массовой разработке он, afaik, используется как ORM, но это сомнительное применение).
3. Ну, я вот не понимаю, почему в текущем виде это вопль отчаяния. Нормального подхода к разработке GUI нет ни у кого из основных вендоров (Flex умер, ближе прочих Eclipse RCP, но он слишком айбимонструозен), при нормальном развитии fx может быть заметно удобнее всех прочих вариантов. А развитие у него все прямее и прямее.
4. А нафига такая узкоспецифическая вещь в ядре? Пусть будет отдельной библиотекой, там ей самое место.
5. Java - язык массовой разработки и чем меньше там будет способов прострелить себе ногу - тем лучше. Я и так боюсь, что обычный "индус" сделает с лябмдой и "дефолтными реализациями интерфейсов".

Да и вообще, инструмент все-таки вторичен :)

1. Советую изучить мат часть. Всё linq-образное там есть. Анонимных классов нет. Зачем изливать поток сознания, если ты не потрудился посмотреть что там в этом направлении происходит?
2. Это ты к чему?
3. Ну мы, например, будем писать на JavaFX без всякого спонсорства Oracle. А на чем еще писать богатые desktop приложения для бизнеса?
4. Об интеграции aparapi говорили на keynote. Объявлено официальное партнерство AMD и Oracle в этом направлении.
5. Это ты к чему?

4. Есть, правда в зачаточном состоянии. http://openjdk.java.net/projects/sumatra/

я может с русскими терминами чутка напутал под карированием я понимал:
let haba x y =
....

let habafactory x =
haba 8

т.е. возможность возвращать функцию с частично заполненными аргументами (function currying http://en.wikipedia.org/wiki/Currying)

кортежи в нефункциональном языке вещь довольно убогая - согласен.

Я понял что ты имел в виду. Я не понял к чему ты о нем вспомнил.

Интересно.
А нормальный GUI Builder для Java FX есть уже?

Уже некоторое время назад выпустили Scene Builder. Выглядит вполне нормально. Никакого codegen. Концептуально всё по-человечески. Scene Builder делает FXML файл, к которому уже в Java прицепляется логика, а через css прицепляется стиль.

Функциональное программирование

Евгений, вы обещали: "начинается новая эра функционального программирования и декларативной обработки данных. Подробнее об этом я напишу позже".
Я очень вас прошу, напишите про эту эру ФП.
Или киньте ссылку.
С уважением, Андрей Иванов.

Re: Функциональное программирование

На jug.ru недавно про это тоже был доклад: http://jug.ru/archive/-/blogs/14185

  • 1
?

Log in

No account? Create an account