Как стать автором
Обновить

Немного мыслей о будущем платформы Java

Время на прочтение 3 мин
Количество просмотров 11K
Захотелось попробовать развить здесь одну любопытную дискуссию, которая была начала тема в комментах к будущему подкасту Радио-Т (кстати сами подкасты бывают иногда интересны), но тут же заглохла из-за отсутствия кворума.

Дискуссия о, собственно, будущем Java как языка, и как платформы.
Если вкратце — что могут сделать те, кто направляет развитие Java, чтобы удержать ее на плаву в течении долгого времени. По ссылке выше обсуждение пошло было в сторону того, почему в лабораториях Microsoft Research более или менее активно разрабатываются альтернативные языки для платформы .NET (такие, например, как F#), а вот Sun/Oracle с такой поддержкой альтернативным языкам отстают.


Итак, немного моих мыслей по этому поводу…

Java изначально позиционировалась как платформенно-независимый язык программирования. Подчеркну, не платформа, а именно кроссплатформенный язык. Такой, чтоб write once, run anywhere. Т.е. несмотря на то, что архитектура стековой машины JVM и структура байткода позволяла и позволяет портировать другие языки под JVM, сановцы никогда не делали на это акцент. Акцент всегда был на том, что есть JVM, которая работает везде, есть байт-код, который не зависит от архитектуры, нет указателей и прочего прямого доступа к памяти, что круто. А потому пишите на Java (языке) и будет вам счастье.

Сравним это с позиционированием .NET, C# и позицию Майкрософта здесь. Еще когда я учил C# 2.0 по книжке Эндрю Троелсена лет так 5 назад (это было до моего перехода на Java ;)), там напротив, было везде написано, что .NET и его компоненты, в частности среда CLR — это среда для хостинга промежуточного управляемого кода. C#, VB#, managed C++ (который не особо выстрелил, но эксперимент был проведен), и всякие языки портированные под .NET, типа IronPython и иже с ними, а так же новые языки, развиваемые Microsoft Research, типа F#.

При этом, например, Майкрофост кроме того, что быстро развивает «основной» язык, С#, еще и активно вкладывается а разработку других языков под дотнет. Например, F#, который перенял очень многие концепции из OCaml-а и, насколько я знаю, Haskell-a. Код на F# буквально очень похож на код на хаскелле, уверяю! MSSQL сервер так же умеет хостить CLR и поддерживает, насколько я знаю, написание хранимых процедур на нем.

А теперь вернемся к миру Java. Итак -Java, как платформа и как язык, развивается медленно под сравнению с C# и .NET, это очевидно. Возможно, это правильно, так как миру Enterprise-а (банки, биржи и т.п.) важнее стабильность, а не быстрое развитие.

Но тут момент такой. Java как язык, именно как язык, а не платформа, весьма скуден и ограничен. Да, он довольно таки строен, прост, компактен и все такое (я сам джавист), но ограничен, не поддерживает многие концепции, не предоставляет языковой поддержки для замыканий, лямбд, работы с коллекциями, регулярными выражениями и вообще заморожен из-за того, что на него завязано слишком много. Все изменения проходят через JCP, который, как известно, чертовски нетороплив.

С другой стороны, есть Groovy, Scala, для желающих чего-то более необычного — Closure. При этом эти языки написаны и отлаживаются либо группами комьюнити (например, Groovy разрабатывается SpringSource комьюнити), либо на гранты (как Scala, получившая недавно крупный грант Евросоюза). Со стороны Sun/Oracle поддержки тут я не вижу, ну кроме разве что введения инструкции InvokeDynamic в 7 Java, но этого мало. Мало и слишком медленно.

В общем, на мой взгляд, Java имеет огромный шанс еще очень долго держать лидерство как платформа, если вложится в развитие и, главное, продвижение (!) основных альтернативных языков под JVM. Это то, что рекламировали маркетологи .NET как один из мощных плюсов платформы с самого начала.

«Пишите на вашем любимом языке, будь то старая добрая Java, лаконичный Groovy с его языковым сахаром и метапрограммированием, изощренная и немного академичная Scala, или Clojure (тут без эпитетов, ибо не трогал, не знаю), — и запускаете на стандартной, надежной, проверенной (миллион эпитетов) платформе Java».

Как вам?

Заметна разница в позиционировании платформ. .NET изначально позиционировался как платформа для скрещивания в рантайме многих языков (для начача это были C#, VB#, managed C++), а вот у маркетологов Java такого заметно не было. Всегда шло позиционирование немного другое — Java это такой универсальный язык, который работает на платформе Java, где есть платформенно-независимый байткод, нет работы с памятью и прочего. Но вот про то, что под JVM можно разрабатывать и портировать другие языки, и писать код на них — на это особого упора, сколько я помню, никогда не делалось.

Так кто все же что думает по этому поводу? Будущее — за языками, как таковыми, в их теперешнем понимании (включая такие языки как Lisp, Nemerle, Ruby...), или все же за платформами для хостинга рантайм-сервисов, с кучей компиляторов под них (которые по сути, парсеры грамматики и генераторы байкода в том или ином виде)?
Теги:
Хабы:
+19
Комментарии 123
Комментарии Комментарии 123

Публикации

Истории

Работа

Java разработчик
359 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн