Приобретение Sun компанией Oracle заставило людей беспокоиться о будущем Java, сможет ли Oracle продолжать поддерживать открытость Java, а также в условиях появления ряда легких языков, таких как Ruby, Python или PHP. Сможет ли Java продолжать сохранять свою популярность в разработке?
14 лет назад, когда гений маркетинга из Sun изменил название экспериментального кроссплатформенного языка с Oak, символизирующего надежность, на Java, полную аромата, он, возможно, не думал, что у этого языка будет потенциал стать популярный язык. Позже слава. Фактически, если Sun теперь хочет изменить название этого языка, чтобы точно отразить ее положение в компьютерной индустрии, кажется, что Oak более ярок. Сегодня, хотя язык Java на самом деле не везде процветает, он появился во многих случаях и устройствах и пользуется репутацией стабильной работы, а хорошо спроектированный код Java, возможно, не доминирует на всех компьютерах или всех платформах, но он близок к этому; Становление универсального языка уже в пределах досягаемости.
Джеймс Гослинг, отец Java, подчеркнул это, когда вышел на сцену, чтобы выступить на конференции OpenWorld, организованной Oracle. Он открыл слайд-шоу JavaFX со множеством статистических данных: более 850 миллионов настольных компьютеров с поддержкой Java и около 10 миллиардов устройств с поддержкой Java. Фактически, виртуальные машины Java распространены в электронных устройствах: устройствах чтения электронных книг Kindle, проигрывателях дисков Blu-ray и смартфонах (в том числе менее смартфонах) и т. д. Приложения для iPhone работают на тысячах iPhone, но Java встроена в 2,6 миллиарда телефонов, от не очень умных телефонов, которые можно купить за 20 долларов, до телефонов BlackBerry последнего поколения и телефонов Android. Ничего не включено.
Приглашение Гослинга выступить на конференции OpenWorld — это лишь один из способов, с помощью которого глава Oracle Ларри Эллисон надеется убедить инженеров, что у этого языка блестящее будущее. Oracle хочет приобрести Sun Microsystems, но ей еще предстоит дождаться одобрения этого решения европейскими регулирующими органами. Правительство США дало зеленый свет, но представители европейских правительств еще не согласились на сделку из-за опасений по поводу развития MySQL. И Гослинг, и председатель Sun МакНили заявили, что после завершения слияния и поглощения Java получит больше внимания и ресурсов от Oracle, чем раньше.
В краткосрочной перспективе сигнал, поданный Эллисоном, возможно, не будет иметь большого значения, потому что теперь, когда Java стала климатом, изменить направление развития непросто. Конечно, некоторые люди полагают, что бизнес-модель Oracle настолько отличается, что она неизбежно внесет серьезные изменения во все части экосистемы Java. В целом, несмотря на все причины, по которым Java может измениться, существуют одинаково веские причины, по которым Oracle может захотеть сохранить статус-кво.
Приложения корпоративного уровня — главное поле битвы
Java впервые нашла свое место на стороне сервера, и эта область по-прежнему остается основным местом, где в будущем, как ожидается, появятся виртуальные машины Java. Для всех продуктов Oracle большие серверы также являются основным домом, поэтому появление этой пары имеет смысл. Хотя программисты PHP отдают предпочтение MySQL, для корпоративных приложений с интенсивным использованием данных многие из наиболее важных проектов по-прежнему используют Java, завернутую в архитектуру на базе Oracle, и эта ситуация не должна измениться в ближайшее время.
По словам Сан, сервер приложений GlassFish загружается более 1 миллиона раз в месяц, а старые платформы, такие как Tomcat, по-прежнему широко распространены. Поскольку эта технология высоко ценится, является быстрой и по-настоящему кроссплатформенной, крупные предприятия (такие как банки и страховые компании) пользуются большим спросом на разработчиков Java.
Однако Java больше не считается новейшим и самым крутым синтаксисом. Некоторые программисты жаловались на структуру статически типизированных языков и перешли на более новые или более простые языки, такие как Ruby, Python или PHP. Многие из сегодняшних более простых веб-приложений разрабатываются на этих языках, поскольку код, который они пишут, легко модифицируется и может быть быстро прототипирован. Однако эти простые в использовании новые языки часто полагаются на Java: разработчики Ruby часто используют JRuby (язык Ruby на основе Java), поскольку виртуальная машина Java может лучше справляться с тяжелыми задачами и освобождать несколько потоков. Jython (язык Python, основанный на Java) аналогичен.
В настоящее время Java включает в себя некоторые из новейших методов программирования, чтобы ограничить проникновение этих новых языков. Grails явно имитирует многие простые декларативные шаблоны Ruby on Rails; платформа Grails сочетает в себе подключаемые модули сценариев, такие как Groovy, с промежуточным программным обеспечением базы данных под названием Hibernate. Groovy сам по себе добавляет множество динамических опций для облегчения интерпретации кода и может быть напрямую связан с любой частью интерфейса программирования приложений Java (API). Нет необходимости даже думать о Python или Ruby, потому что Groovy с удобным современным синтаксисом предоставляет Java-программистам доступ к, казалось бы, бесконечному разнообразию огромных библиотек и надежной базовой виртуальной машине.
Станьте мобильным
Количество Java-телефонов (по оценкам, около 2,6 миллиардов) ошеломляет, поскольку многие из самых простых телефонов на рынке работают под управлением Java Platform Micro Edition (Java ME). Это позволяет таким компаниям, как Wattpad.com, создавать платформы для чтения документов, которые бесперебойно работают во всем третьем мире.
Однако количество смартфонов, работающих под управлением Java, относительно невелико. Огромный успех iPhone вдохновил многих людей заново изучить Objective C. Этот язык позволяет программистам улучшить контроль над некоторыми системными проблемами, такими как использование памяти. Java скрывает от программистов большинство основных проблем, что является преимуществом, но предпосылка состоит в том, что нет необходимости управлять такими ресурсами, как память, поскольку при небольшой ошибке при сборке мусора некоторые игры не запустятся. К сожалению, поскольку время автономной работы является столь важным фактором, смартфоны требуют более жесткого управления ресурсами, чем любая другая платформа.
Тем не менее, Java-программисты востребованы, поскольку BlackBerry продолжает использовать Java ME на своей новой платформе: она добавляет в профили телефона поддержку сенсорных экранов и датчиков ориентации. В Android есть непредсказуемые факторы. С тех пор, как Google открыл возможность использования Android, многие производители мобильных телефонов присоединились к этой платформе.
Android от Google построен на основе Apache Harmony с открытым исходным кодом и его классов, а не на разработанном Sun Java Development Kit (JDK) и Java ME. Для человека, пишущего код в Eclipse, они будут выглядеть почти одинаково. Во многих других случаях это не будет иметь значения, поскольку при разработке Android используется множество форм XML, но если две среды разработки отойдут друг от друга, это разделение может стать большой проблемой.
Верните себе место на рабочем столе
Большинство людей до сих пор думают, что Java никогда не имела успеха на настольных компьютерах, и это уже прошлое. Сегодня Java медленно, но неуклонно проникает во все уголки современных операционных систем. В то время как стандартные приложения, написанные на Swing, по-прежнему страдают от попыток использовать самые базовые части каждой платформы, с помощью новых платформ и инфраструктур разработки, таких как JavaFX и Web Start, становится возможным эффективно развертывать программное обеспечение через Интернет. Собственная платформа обеспечивает все кэширование архивов Java (JAR). Щелкнув ссылку, а иногда и несколько щелчков мышью в диалоговом окне предоставления разрешений, программное обеспечение можно установить и обновить, а также запустить в любое время.
JavaFX до сих пор остается неизвестным. Графические возможности теперь конкурируют с Adobe Flash; вычислительный движок поддерживает большую часть API Java, но этот язык представляет собой странный гибрид настоящей Java, JavaScript и других языков разметки. Код проще обычного Java, поэтому Java-программистам приходится изучать что-то новое. Однако для очень интерактивного настольного инструмента новый класс анимации, возможно, стоит потратить время на изучение. Web Start продолжает постепенно улучшать возможности развертывания программного обеспечения непосредственно на рабочем столе через браузер.
Захватить встроенное поле
Java также процветает там, где люди меньше всего этого ожидают. Хотя программисты на C, возможно, никогда не признают умные возможности хранения и быстрого выполнения виртуальной машины Java, успех Java в не-смартфонах, приставках, встроенных чипах, Kindle и других устройствах с низким энергопотреблением показывает: встроенные приложения. Популярность Java также помогает программистам переходить с больших платформ на маленькие. Хотя перейти от разработки приложений корпоративного уровня для мэйнфреймов к разработке небольшого встроенного кода непросто, стандарт Java делает этот переход намного проще, чем многие другие инструменты.
Пакеты Java также становятся все меньше и меньше. Гослинг использовал пыль, чтобы описать компьютер размером с монету, поддерживающий Java. JavaCard, виртуальная машина и API для таких небольших пакетов, скоро представит версию 3.0, знаковую версию, которая добавит возможности сетевого подключения. Хотя эти маленькие точки еще не настолько малы, чтобы поместиться в человеческий глаз, возможность напрямую общаться с Интернетом делает их очень заманчивыми.
Партнеры разойдутся?
Больше всего всех разработчиков беспокоит следующий вопрос: какие конфликты интересов изменятся, если приобретение Oracle компании Sun будет завершено? Oracle выросла за счет крупных сборов за лицензирование программного обеспечения, и ее программное обеспечение может работать на любом оборудовании, которое пожелают купить клиенты. Sun, с другой стороны, обычно раздает программное обеспечение бесплатно, а затем зарабатывает немного денег, продавая серверы. Эти стратегии распределения, возможно, не изменятся сразу, поскольку слишком велика инерция, но никто не знает, какие решения примет Oracle в будущем.
Некоторые считают, что неспособность Oracle взимать большие лицензионные сборы в прошлом только побудит Эллисона применить аналогичную тактику в отношении Sun. Возможно, отдел продаж Oracle прямо сейчас жаждет этой возможности: постепенного увеличения лицензионных сборов там, где Java раньше была бесплатной. Чтобы избежать переписывания приложений Java Platform Enterprise Edition (Java EE), многие компании, вероятно, предпочли бы платить 100, 200 или даже 1 миллион долларов за процессор.
Критики отмечают, что Oracle может легко разрабатывать новые версии виртуальной машины Java с разным уровнем производительности для разных рынков. Виртуальные машины для настольных компьютеров могут оставаться бесплатными, Oracle может даже платить поставщикам компьютеров за продвижение Java и JavaFX, а повышение производительности при обработке экстремальной многопоточности может стоить очень дорого. Есть много способов заработать деньги на пользователях, и лицензионные сборы часто обходятся намного дешевле: гораздо дороже заставить непокорных программистов сначала выучить новый язык, а затем переписать базу кода.
Но некоторые полагают, что Oracle может не пойти на этот шаг. Источник, близкий к Sleepycat, компании, занимающейся базами данных с открытым исходным кодом, которую Oracle приобрела в 2006 году, сообщил, что Oracle примерно удвоила размер своей технической команды, при этом все модели двойного лицензирования остались неизменными. Программное обеспечение по-прежнему поставляется либо с открытым исходным кодом, либо в форме коммерческой лицензии. Если бы Oracle относилась к Java как к Sleepycat, лицензии сообщества и другие опции по-прежнему были бы такими же бесплатными и широко доступными, как и прежде, и было бы больше инженеров для улучшения кода.
Остаются более глубокие вопросы о долгосрочных отношениях с другими крупными партнерами по Java. Google продолжает поддерживать Apache Harmony, проект с более чем 1,25 миллионами строк кода, который, похоже, направлен на подрыв статуса Sun как центра мира. IBM проиграла конкурентную войну за Sun и теперь считает, что конкурент Oracle сильнее. IBM разработала инструменты разработки Eclipse и, возможно, также начнет развивать платформу Java в другом направлении.
Другие партнёры были более агрессивны. Технический директор SAP Вишал Сикка неоднократно просил Sun выпустить Java Community Process (JCP), сосредоточив внимание на плане, предложенном Oracle в 2007 году: передача контроля открытой, независимой, независимой от поставщиков организации по стандартизации и всем организациям по стандартизации. Члены участвуют на основе равных возможностей. Хотя Oracle по большей части хранит молчание о деталях, можно с уверенностью предположить, что компания вновь обретет уважение к некоторым идеям, унаследованным от Sun.
Однако, хотя другие партнеры могут заниматься запугиванием, они могут рассмотреть вопрос о степени, потому что на самом деле все сдержаны друг от друга, и любое чрезмерное поведение, скорее всего, будет заблокировано, потому что все понимают, что раз написано, везде преимущества действующих концепций. Если код, написанный для телефона Android, невозможно легко перенести на проигрыватель Sony Blu-ray или сервер Glassfish, есть возможность появления другого языка. Фактически, несколько компаний уже пишут наборы инструментов, которые позволяют пользователям легко запускать программное обеспечение Ruby on Rails или Python на iPhone.
Кроме того, многие из этих новых языков могут стать серьезными конкурентами, и слишком сильная борьба только поможет им завоевать позиции. Существуют десятки очень хороших, менее известных пакетов с открытым исходным кодом, которые обычно можно портировать на любую платформу с небольшой конверсией преданными энтузиастами. Например, Python уже является основным языком в некоторых научных областях, и Google выбрал Python вместо Java в качестве первого языка, поддерживаемого его App Engine. Хотя IBM, Oracle и Google могут вытеснить друг друга в гонке за доминирование, они должны признать, что все выигрывают от стандартизации, а не от монополии. Если кто-то осмелится слишком сильно исключать других и пытаться контролировать Java, другие поставщики могут броситься к своим конкурентам.
Java также открывает магазин приложений?
Тот факт, что база кода Java остается относительно связной и относительно стандартизированной, вызвал предположения о том, как Sun (и Oracle, если слияние состоится) смогут использовать повсеместное распространение Java, чтобы заработать состояние, не повышая лицензионные сборы и не вытесняя давление на всех? Что, если бы кто-то разработал App Store для всей экосистемы Java, продавая виджеты, написанные на Java, точно так же, как приложения для iPhone. Они могли бы быть на настольных компьютерах, телефонах, проигрывателях Blu-ray или что, если бы они могли работать на любой другой платформе, использующей Java? ?
В последнее время появилось значительное количество приложений для телефонов Android, и Sun также планирует создать магазин Java, чтобы люди могли просто перетащить приложение на рабочий стол или просто написать немного больше кода для комбинированного добавления каждого приложения на рабочий стол. , они могут работать практически в любом уголке мира Java. Тем не менее, работа с совершенно разными экранами и пользовательскими интерфейсами может оказаться непростой задачей.
Представьте себе, насколько привлекателен этот сценарий: приложение, написанное разработчиком, запускается на телефоне Android, он работает над задачей за своим столом, а когда возвращается домой, оно без проблем запускается на проигрывателе Blu-ray в гостиной.
Предоставление Java-приложений людям, сидящим на диване, даже несколько неожиданно, поскольку язык Java изначально предназначался для работы на телеприставках в первые годы своего существования, когда он назывался Oak. Эта концепция будет опираться на величайшие преимущества платформы Java: популярность и кросс-платформенную стабильность. Возможно, эти преимущества помогут Java приносить постоянный доход ее изобретателю.