?

Log in

No account? Create an account

elizarov


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


Previous Entry Share Next Entry
JavaOne: Открытие, ключевые темы
elizarov
Вчера состоялось открытие очередной конференции JavaOne. Основные темы, на котрых были расставлены акценты в открывающей речи, это встроенные системы (embedded) и скорый выход очередной версии Java - Java 8.

В области встроенных Java систем Oracle сильно продвинулась за последние несколько лет. Был выпущен полноценный JDK под популярные в мире встроенных систем Linux системы на ARM процессорах. Совсем недавно появилась "HardFloat ABI" версия, которая позаволяет запускать Java приложения на Raspberry Pi без лишних телодвиженией. В этом году спонсорами и партнерами конференции являются ARM, Freescale, Qualcomm, RaspberyPi, Gemalto и ST. Очень важно, что происходит конвергенция "маленьких" JVM и "больших" JVM. Многие современные устройста достаточно мощные чтобы запускать полноценную JVM (ARM Linux версия), а в версии Java 8 появится рад стандартных компактных профилей, представляющих подмножество библиотек классов, уменьшая размер и необходимый объем памяти. В то же время для сильно ограниченных систем уже давно существует Java ME, которое более 10 лет даже не поддерживало новые возможности языка. С выходом "большой" Java SE 8 появится и Java ME 8, которая приведет в соответствие уровень поддерживаемого языка со своим большим братом.

Java 8 станет действительно революционной версией языка. Такого не было уже 10 лет с момента выхода Java 5. Наконец в Java появляются closures aka lambda. Одновременнно с этим происходит модернизация всех стандартных библиотек коллеций, позволяющая работать с данными концентрируясь на стоящей задаче, без необходимости использования шаблонного кода. Java выступает догоняющим и станет последним широко-распространенным языком в котором появляются closures. Про важность этих изменений уже написано очень много. Очень радует, что после многолетних дебатов был выбран элегантный синтаксис, который естествено вписывается в язык Java, и высокопроизводительная реализация, которая позволит сделать существующий код и компактней и быстрей при переходе на Java 8. Немаловажно и то, что новые методы работы с коллециями с самого начала разработаны с учетом параллельной обработки данных. Переход с последовательной обработки данных на параллельную происходит простой заменой вызова метода stream на вызов метода parallelStream. Все это уже доступно для разработчиков в полнофунциональной developer preview версии здесь.

Во время открывающей речи не был забыт и JavaFX следующая версия которого выходет в составе Java SE 8 и будет называться JavaFX 8. Основным нововведением будет поддержка 3D графики. Основные инновации в развитии "rich UI" происходят именно в JavaFX, но и про поддержку миграции со старых технологий Oracle не забывает. Появится возможность встраивать Swing компоненты в JavaFX (в обратную сторону можно уже сейчас).

Был упомянут и вышедший недавно Java EE 7. В качестве технологической демонстрации было показано Java EE приложение для игры в шахматы по сети, в котром клиенты взаимодействуют с сервером через websocket получая push нотификации с ходами от сервера. NetBeans позволяло отлаживать одновременно серверный Java код и клиентский JavaScript. Кроме JS/HTML5 клиента с этим серверным приложением работало простое 3D JavaFX приложение запущенное на любопытном do-it-yourself Rasperry Pi планшете под названием DukePad, полнценное JavaFX приложение на ноутбуке с красивой 3D анимацией шахматных фигур професионально сделанное в Maya, и робот управляемый встроенной Java системой который переставлял физицеские фигурки по реальной шахматной доске. Демонстрация прошла без существенных накладок и аудиторя была довольна увиденным.

  • 1
мучает один дурацкий вопрос -- "зачем?"

мне сложно представить что для websocket приложений кто-то вменяемый захочет использовать j2ee (пропускаем тех кто вынужден "спать" с вебсферой по обстоятельствам службы)

embedded рынок (киосков и прочей хрени) просран хрому безвозвратно... автомобили и прочие RT системы? не дай бог. только если дальше медиа проигрывателя это не пойдет.

javafx да, наверное круто. но опять вопрос где и зачем? (предположим у меня нет цели заюзать javafx во чтобы то ни стало).

lambda... ну да круто, особенно без капчуринга окружения... опять вопрос - зачем? вроде все кто был недоволен явой слезли на скалу (да там свои грабли, но вцелом сильно лучше). зачем засорять теперь язык у которого единственные плюсы простота и скорость компиляции?

что в плане работы с коллекциями поменялось для тех кто видел plinq? типа вау черз 4 года почти то же самое можно сделать в java? вот уж действительно охренеть не встать :)

т.е. да религиозные фанатики теперь могут размахиват флажками что ява тоже это умеет (дальше звездочка и мелким шрифтом, что все на самом деле не совсем так) но для остальных, НОРМАЛЬНЫХ людей что поменялось?


Edited at 2013-09-23 06:01 pm (UTC)

J2ee дает возможность массового написания корпоративных приложений. Там где не сильно нужна производительность кода, но важна производительность труда. А websockets нужны для push нотификаций.

Embedded что? Там сейчас такой ахтунг и фрагментация в программировании... Ужас-ужас. Java + JavaFX для них это просто грааль, который дает возможность вырваться из темных веков в светлое будущее современных технологий и готовых библиотек кода.

Edited at 2013-09-23 07:04 pm (UTC)

JavaFX заменяет Swing для desktop приложений. Сейчас это уже не такая большая ниша как была раньше. Много делается теперь на web. Но эта ниша есть и в ближайшее время не исчезнет.

Далеко не все готовы перейти на Scala или Clojure или еще-что нибудь где с даннымыми работать удобней чем сейчас в Java. Причины разные. Задачи у всех разные. Разные языки оптимизированы под разный класс решаемых задач. Те кто занимался исключительно работой с данными Java никогда и не использовал (зачем?).

В Java ничего не придумали нового, а просто аккуратно внедрили уже давно известные наработки. И это хорошо. Java не заменит Scala или Clojure. Но теперь, если в Java коде возникает задача по работе с коллекциями, это будет делать проще и элегантней. Что в этом плохого? Одна польза.

с моей точки зрения плохо именно то что ничего нового "от себя" нету. тут вопрос отношения если смотреть в переспективу - то ее нет (вектор развития и vision не обозначены). если смотреть как на стабильный язык на котором написаны километры кода, то тоже плюсы сомнительны -- эти километры уже не перепишутся (а для новых задач можно взять новый язык)... т.е. да хорошо что хоть что-то делают, но мне кажется что это КАТАСТРОФИЧЕСКИ мало... поясню в моем понимании было б ДЕЙСТВИТЕЛЬНО круто еслиб было сказано смотрите ява остается но у нас есть новый язык lavazza (ну или другой сорт кофе) и в нем куча плюшек и он совместим с ява рантаймом, но jvm мы дальше будем пилить под lavazza...

Я часто работаю с километрами уже написанного кода и воочию наблюдаю процесс его эволюции с появлением новых возможностей языка. Ни на какой новый язык он никогда не перепишется, а вот скорость впитывания новых возможностей Java достаточно высока. Есть куча отличных новых языков, но их наличие ни как не отменяет необходисоть эволюционного развития Java как раз для километров уже написанного на Java кода.

>В Java ничего не придумали нового, а просто аккуратно внедрили уже давно известные наработки. И это хорошо. Java не заменит Scala или Clojure. Но теперь, если в Java коде возникает задача по работе с коллекциями, это будет делать проще и элегантней. Что в этом плохого? Одна польза.

Аккуратно, это сильно сказано. Так было, когда Java появился, но сейчас я бы назвал это не аккуратно а через задницу. Начилось все с недодженериков, которые конечно лучше чем ничего, но явно можно сделать лучше. Продолжается недокложами. Конечно, когда язык дизайнится с нуля, сделать по человечески гораздо проще, и мне кажется Java пришла пора заменить чем-то более новым, но основанном на тех же принципом, только с целостной интеграцией хороших идей из других языков. Scala тут не подходит, Clojure тоже, скорее что-то вроде Kotlin.


Edited at 2013-09-23 08:04 pm (UTC)

Безусловно, при дизайне нового языка есть возможность элегантно скомбинировать различные концепции. Расширяя существующий язык приходится идти на компромисы. Главное чтобы пригладные программисты в конце концов выигрывали, чтобы они могли писать более понятный код и делать меньше ошибок. С моей точки зрения, в Java это пока удается и остается место для дальнейших улучшений.

В тоже время, во многих специальных областях Java уже заменяется другими, более подходящими для решаемой задачи языками. И это хорошо. У вас есть возможность выбрать тот язык программирования, на котором ваша задача решается проще. Только я не понимаю почему это отменяет необходимость развивать сам язык Java. Что плохого в том, что Java развивается?

Основная претензия что он очень медленно развивается. Кложуры есть уже даже в C++11 и ObjC. Java 8 только хотят выпустить еще.
Ну в общем язык по теперешним меркам довольно громоздкий. Жаль что оракл стоит на своем и мы мы будем наблюдать упадок джава. Как C++ или ФОРТРАН.

Почему жаль? Это естественный процесс роста, взросления, старения и смерти. Java уже взрослый язык и путь назад в юность ему закрыт. Он бы мог развиваться и быстей, конечно, но это все-равно путь к старости и смерти. Хотя до смерти еще далеко. Даже C++ еще полон сил, а Java не в пример его моложе. Но рано или поздно все-равно ему на смену придет что-то новое и даже хорошо если за новым будет стоять какая-то другая компания.

знаю что так не будет (потому что это оракл) но хотелось бы чтоб это был оракл :) потому что:
1. скажу крамольную вещь -- яву дальше развивать не надо. вот реально нововведения вызывают больше недоумения чем одобрения
2. если это будет другая компания - значит jvm на помойку. а этого очень и очень не хочется (10 шагов назад)
3. любой новый язык на базе jvm без поддержки инженеров которые пилят jvm обречен жить в среде энтузиастов и ресечеров. (вот как хаскел/scala примерно)

к сожалению вместо того чтоб признать что лучшее что можно сделать с явой это ничего не делать вообще. оракл извращается как может. вот реально как в анекдоте про дохлую лошадь.

1. А я за развитие. Более того, в конечном итоге, closures вписались очень элегантно. Мне очень нравится получившийся результат, как по сравнению с альтернативными предложениями которые были раньше, так и по сравнению с ваиантом "оставить всё как есть".

Более того, выскажу крамольную мысль, что есть еще ряд улучшений которые можно и нужно сделать в языке Java, прежде чем дальнейшее его развитие станет контрпродуктивным.

2-3. Oracle сейчас очень активно поддерживает альтернативные языки на JVM. Не вижу здесь причин для беспокойства. Да это и в их интересах. Они хотят чтобы у них JavaScript движок (Nashorn) быстро на JVM работал.

Одной рукой поддерживают, другой рукой.. В общем команда JRuby в полном составе из Sun уволилась и основала свою фирму. Как там в Оракле непонятно.

Edited at 2013-09-24 05:20 pm (UTC)

И это правильно. Нельзя вот так несколько языков в одной компании поддерживать без конфликтов. Всем лучше когда альтернативные языки разрабатываются отдельными компаниями, которые в будущем процветании этих языков заинтересованы. А JVM становится для них стандартной инфраструктурой, типа ОС, а Java становится системным языком для JVM.

чтобы было по теме -- минуты 3 думал зачем мне javascript движок в java (я знаю что он там какой-то есть) зачем он мне нужен "более быстрый" если я им все равно не пользуюсь и не понимаю зачем он кому-то нужен?? не в академическом смысле (курсовик на тему свой браузер на яве) а в практическом? в практическом смысле есть chromium/chromeOs которые везде быстро работают с быстрым яваскриптом правильным css рендером и.т.п.... что я такое должен захотеть сделать на яваскрипте из явы???

а в общечеловеческом -- вот с одной стороны как-то хочется верить.. с другой... ты вот знаешь хоть один продукт купленный ораклом, которому потом стало хорошо? по-моему маниакальность монетизации застит в этой компании здравый смысл... mysql, weblogic, куча других продуктов (трупов) купленных и удушенных на корню... ява она в этом смысле 48-я в списке :(... то что они вообще в принципе дожили до Java8 (и наверное мы увидим релиз в этой жизни) это чудо-чудное... все чего в 8-ку не вошло скорей всего вообще света не увидит никогда.

Хвост Слона

Да-да, хвост слона не позволяет судить о размере его ушей.
У меня проще подход к современному языку и процессорам.
Во сколько раз быстрее на 100 процессорах расчёт среднего в большом массиве, чем на одном процессоре? И найдите статью "компьютер саенс" про алгоритм параллельно расчёта среднего или максимума с помощью славных "поисковиков" Google? Bing или яндекс. И это 2013 год! Позорище. Прогресса не вижу. Маркетнаука и её достижения.

Edited at 2013-09-25 06:12 am (UTC)

  • 1