Pull to refresh

Comments 64

Сначала Гвидо ван Россум заявляет, что он «устал». Затем разработчики PHP валят, теперь разработчикам на Java приподносят неоднозначные новости… Что вообще происходит? Кто-то решил потопить все мэйнстримные ЯП?
Конкретно в этом случае мне кажется, что Оракул просто пожадничал.
Пожадничал — что именно?
в целом пожадничал и захотел заработать денег (снова).
Так что же именно он пожадничал? :)

К 11-й Java Oracle отдал почти всё, что было в OracleJDK в OpenJDK. Т.е. наоборот, то, что раньше было платным — теперь бесплатно и открыто.
А что было раньше платным (кроме API, если смотреть на процесс по Андроиду)?
UFO just landed and posted this here
Это общеиндустриальный тренд — держать свои форки open source и актуализировать их становится очень дорого. Как пример, android замерджили максимум что могли в linux kernel mainline, чтобы не бэкпортить со слезами обратно к себе фиксы и новые фичи новых версии ядра linux. Похоже по этому же пути пошел и Oracle, заодно изменив модель монетизации. Так как бэкпорт исправлений из новых версий JDK и регулярная подписка для корпораций многого стоит.

Публикация-«баян», так как многое из написанного здесь я уже рассказывал на хабре в «Жизнь с Java SE 8 и Java SE 11 по $25 за процессор в месяц» еще в июле.
Все таки многое — это не то же самое что все. В статье за июль очень большой фокус на Oracle JDK, в то время как информации по альтернативам не много.

Кроме того, ситуация постоянно меняется. Уверен и июле Вы не ожидали таких новостей от Амазона aws.amazon.com/corretto
Возможно дело в том, что управлять развитием и поддержкой ЯП в одиночку (Гвидо) и даже одной организацией (Oracle) становится слишком сложно по причине ускорения развития этих ЯП. И делаются шаги в сторону децентрализация управления процессом.
Но взять пример ядра Линукс — там кодовая база явно больше, чем у языков python/java (я имею в виду не весь софт, конечно, когда-либо написанный на пайтон/ява, а спецификацию / размер среды сборки и/или компилятора).
И ничего — Линус как-то справляется.
Я вообще не понимаю, как там можно не справляться. Есть люди, которые живут этой профессией и занимались бы ею даже, если бы им за это не платили. К таким людям отношусь и я. И если бы я был умнее и создал, что-то, что принесло людям пользу, а мне славу, и пожизненное баблишко на прожить/пропитаться, с какого рожна мне бы было вставать и уходить? Линус, насколько я знаю, вполне себе счастливо живёт и занимается любимым делом. Молодец, парень. О чём ещё можно мечтать? А позиция Гвидо мне совершенно непонятна.
Так я в принципе про то же. Тезис
даже одной организацией (Oracle) становится слишком сложно по причине ускорения развития этих ЯП.

выглядит надуманным.
Да, кстати, Microsoft же справляется как-то. Да сколько они языков налепили за свою жизнь! Какие-то отмерли, какие-то полуживые, какие-то варятся в своей нише, какие-то на коне… C#, F#, C++/CLI, Visual Basic(.NET), T-SQL, X++, J++, J#, Cω, TypeScript, MSIL, XAML… да все сходу и не вспомню.
А позиция Гвидо мне совершенно непонятна.
В качестве предположения: есть люди, которые живут профессией, и занимались бы ею даже, если бы им за это не платили. Живут, живут… а потом перестают, и начинают жить чем-то другим.
Python появился двадцать восемь лет назад. За это время интересы у человека могут измениться не то, что серьезно, а неоднократно.
И ничего — Линус как-то справляется.
Да вроде бы относительно недавно были новости по поводу того, что Линус склоняется к тому, чтобы снять с себя часть полномочий (не уверен за точность формулировки).
Возможно, да. Возможно, нет. Вы на кофейной гуще гадаете? Уход ключевых разработчиков в другую контору и сообщения рода «Я устал, я ухожу» совсем не похоже на децентрализацию или делегирование полномочий. Но в то, что Oracle просто пожалела воздуха для людей, я, конечно, ещё могу поверить.
Чтобы топить — нужно предложить альтернативу, которая всех спасет.
Сейчас на рынке такого языка нет.
К тому же, не нужно искать умысел там, где все можно объяснить случайностью или человеческой глупостью.
Ну я бы не был так категоричен. Есть, например, C# и поползновения Microsoft в сторону опенсорс, слияние Mono в .NET Core и т.п. Это лишь пример, но всё же. Есть гугль со своим Go, который как бы и взлетел, но как-то «нызэнько-нызэнько». Есть Apple, про Swift которой только сегодня статья была, что он «недооценен как серверный язык». Да и вообще свято место пусто не бывает. А вот, вспомнил, ещё Kotlin есть, например.
Это не совсем тот пример. В смысле, вы конечно можете начать новые проекты на этом всем — и даже очевидно успешно закончить. Но вот портировать что-то с Java замучаетесь. Потому что очень быстро упретесь в то, что язык это лишь мелкая часть экосистемы, а в ней еще всего дохрена, и заменить это дохрена совсем не просто.
Рынок неповоротлив. А языков полно новых, на любой вкус и объем мозга.
UFO just landed and posted this here
Извините, вы серьезно? Если .NET, еще более менее, то php уже перебор для энтерпрайза.
Одноклассники, наверно тоже не просто так с C# на java переходили.
UFO just landed and posted this here
Только учитывайте, что PHP сейчас и PHP 6 лет назад — две несравнимые технологии.

Разумеется.


Навскидку (php 7):


  • Однопоточное
  • Не комплириуется (максимум OPCache в озу на момент исполнения)
  • Изначальная архитектура: запуститься — отработать — умереть. Было тогда — остается и сейчас. Хотя сейчас и можно писать долгоживущие скрипты (демоны, RectPHP и пр.) и не протекает — все равно писать на нем подобное сомнительное удовольствие.
  • Контроль типов для интерпрайза должен быть тотальным ИМХО
  • Не удобно работать с математикой
UFO just landed and posted this here
pthreads.
К тому же я никогда не любил потоки, процессы удобнее.

Слышал, что там тоже не все гладко. С этим пунктном я перегнул.


Почему это минус? Если вы хотите все в один файл собрать, то есть phar.
Или просто пакет сделать.

Имелось ввиду, хотябы в байт-код собиралось, типа .pyc в питоне. А phar это немного не то.


Я бы назвал это одним из основных плюсов экосистемы.
Но если вам это мешает, то никто не заставляет вас так делать.

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


Всякие вебсокет-серверы на ратчете прекрасно работают в крупных продакшенах, проверял лично.

Честно, тут не могу что-то конкретного сказать про данное решение, работал только с SSE на ReactPHP, и то недолго.


И в джаве неудобно. Причина та же самая — нет перегрузки операторов.
С другой стороны отсутствие перегрузки позволяет сделать код более читаемым.

К сожалению синтаксис php не позволит сделать математический код более читаемым.


Видимо у нас с вами слишком разный взгляд на то, как это все должно быть.

UFO just landed and posted this here
Не ответы, а какой-то сплошной набор клише.
Я думаю, что проблема php vs java в enterprise существенно шире и за пределами одних только технических характеристик.
Взять ту же экосистему. Для Java есть полный спектр решений для аудита и проверки качества кода (статический анализ и т.п.).
Обоснуйте, пожалуйста. Я вижу неоспоримый плюс: надежность повышается за счет отсутсвия утечек памяти и всяких сайд-эффектов. Как раз как любит энтерпрайз: надежность в обмен на производительность.

абсолютно нерелевантно. Можно строить надежные системы на уровне архитектуры.
Исходный код гораздо удобнее.

Тоже. Java прекрасно пакуется в jar и бинари версионируются. Деплоить сурцы прямо на сервер — такое себе удовольствие. К тому же, в проде все равно не понадобится смотреть исходный код на сервере. Хочешь правки — отдельный feature-branch и через процесс аудита кода/деплоя.
Самый близкий язык к PHP по синтаксису — это Java.

WTF!?
pthreads.
К тому же я никогда не любил потоки, процессы удобнее.

мне кажется, что сейчас об спорить тоже тухлое дело. Можно легко делать системы в несколько процессов. Все равно упремся в что-то: тот же io, или обращения к внешней БД. Здесь спасает асинхронщина, всякие future/promise. Не знаю завезли ли их в php, но это непринципиально.
UFO just landed and posted this here
В PHP все отлично с асинхронщиной.

видимо не очень, раз такие статьи получаются:
habr.com/company/mailru/blog/329258
Эта реплика будет как-то обоснована?

Вы сделали очень громкое и спорное заявление, абсолютно не обосновав его. И вообще как влияет синтаксис PHP/Java на вопрос их применимости в энтерпрайзе? Логика какая?
Однако приятно, когда экосистема помогает.

несомненно. Но я в php этого не вижу. А в java есть все необходимое. Хотя у меня возникает ощущение, что количество фреймворков для java уже зашкаливает за все мыслимые пределы.
Вы так говорите, как будто подразумеваете, что для PHP нет подобного. Конечно же есть.

Да, конечно. Очень помогает, видимо, писать надежный код. ))) У меня строгое предубеждение, что действительно серьезный и надежный код на PHP не написать в принципе. Именно из-за вещей вроде «динамическая типизация», то, что интерпретируемый, своеобразной обработки ошибок и пр. Это же насколько умный должен быть тулинг, чтобы ловить промахи программиста.
UFO just landed and posted this here
С какой целью? Можно было всякими ioncube и Zend guard, но смысла не было, поэтому такие инструменты вымерли.

Как я понял из описания это обфускаторы, я говорил про байт-код. Потому и вымерли.


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

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


А более предметно можете сказать?

Он тяжело читается из-за знаков долларов. Открыв даже простейшие вычисления написанные на php, приходится вчитываться в то, что там происходит. Грандиозных примеров привести не смогу, но даже в таком, немного утрированном, примере уже не удобно:


public function countPages()
{
    $rowsNumber = $this->countRows();
    $pagesCount = 1;

    if ($rowsNumber > $this->limit) {
        $division = $rowsNumber / $this->limit;
        $pagesCount = floor($division);
        if ($pagesCount != $division) {
            $pagesCount++;
        }
    }

    return $pagesCount;
}

Питон или C# мне гораздо легче читать и понимать, что там происходит.


Самый близкий язык к PHP по синтаксису — это Java.

Видел java "только на картинках". Мне всегда казалось, что общий синтаксис больше на плюсы похож.

Он тяжело читается из-за знаков долларов. Открыв даже простейшие вычисления написанные на php, приходится вчитываться в то, что там происходит. Грандиозных примеров привести не смогу, но даже в таком, немного утрированном, примере уже не удобно:

согласен. Но дело не только в долларах.
Еще проблема в ===, <=> и прочих операторах. А еще много странностей в пыхе (в том числе, и возможность легко писать код-лапшу: часть в процедурном стиле, часть в ООП и все выглядит… на любителя)
Видел java «только на картинках». Мне всегда казалось, что общий синтаксис больше на плюсы похож.

+1. Думаю, что действительно разработчики php вдохновлялись Си (как разрабы java — тоже сями). Но сказать, что у php и java синтаксис одинаковый… Ну, слишком смелое заявление, на мой взгляд.
Еще проблема в ===, <=> и прочих операторах. А еще много странностей в пыхе...

Вот, кстати, да. Забыл про это. Видимо глаз уже замылился и не воспринимается так серьезно, потому что уже на автомате эти места обходишь.


Но сказать, что у php и java синтаксис одинаковый… Ну, слишком смелое заявление, на мой взгляд.

Кажется я вспомнил откуда ноги растут у этого утверждения. В одном из тредов про популярность ЯП (кажется), было упоминание, что пыха со своими namespace становится похожа на Java. И, если не путаю, это было в контесте symfony.

UFO just landed and posted this here
UFO just landed and posted this here
Давайте лучше уж конкретные примеры внедрения php в энтерпрайз.
И чтоб это было: не битрикс какой-нибудь, не интернет-магазины, не какие-нибудь avito/booking.
Желательно (типичные консервативные бизнесы, почему-то тяготеющие к java): банки, логистика-перевозки (ж/д, авиа, морские), страховые компании, госы и пр.
в которых Java используется в энтерпрайзе:

я не понимаю. Это что? Приклад?

Просто меня интересует только одно применение — Java в backend, ну, еще может быть Scala для задач DS/DE. Понятно, что для этих задач .NET такое себе (обычно backend на linux серверах крутится) и на PHP высокоскоростную обработку больших данных не сделаешь.

C# уже года 3 умеет в линукс. Первые версии были сыровата, но с выходом net core 2.0 вообще все хорошо стало.

Что вообще происходит? Кто-то решил потопить все мэйнстримные ЯП?

Призрак Borland-а проснулся и мстит. Си шарп на очереди.
Пока что живее всех живых, становится только лучше. Все новые фичи полезные и нужные.
Вы меня простите, Скрипач, но это элементарное кю!
с чего это вдруг написанный оракловыми сотрудниками вдруг не принадлежит ораклу? то что какую-то часть кода выкладывают под gpl ничего не меняет. код жава все равно собственность оракла. gpl лишь дает право на форк другим.
А разве код писался только сотрудниками Оракл? Если я правильно понимаю, чтобы сменить лицензию и закрыть код им нужно выкинуть весь сторонний код, когда-либо принятый. Или с каждым коммитером договориться.
Разве нет?
А я себе тихенько юзаю как хочу… главное, чтоб оракул не узнал))
Стоимость десктопной версии составляет $2.50 за пользователя в месяц

Я правильно понял, что если у компании сайт на Джаве, на котором зарегистрировано 1000 человек, то нужно платить 2500$ в месяц? А если за следующий месяц зарегистрируется ещё столько же, то платить в 2 раза больше? Это же грабёж.
UFO just landed and posted this here
Я правильно понимаю что LTS будет только для Oracle JDK?
Я правильно понимаю, что вы не читали статью?
«Перейти на OpenJDK, использовать только релизы с долгосрочной поддержкой, и устанавливать версии с исправленными ошибками, доступные для OpenJDK. Это жизнеспособное решение для компаний, которые не могут или не хотят менять стоимость инфраструктуры Java, могли обходиться без коммерческой поддержки в прошлом и полагают, что также смогут и в долгосрочной перспективе.»
Это не мои слова, а слова, написанные в статье. Я думаю, вам стоит спросить автора статьи об источниках.
Вот, например, по второй ссылке в гугл (http://mail.openjdk.java.net/pipermail/jdk-dev/2018-August/001830.html):
OpenJDK is a community project. It's up to the community to support
it. In practice this means that a group of organizations and
individuals will maintain each OpenJDK LTS release for some period
(TBA for 11, but it's sure to be a *lot* longer than six months.) I am
certain that there will be a jdk11u project, and it will be properly
and professionally run. I think it's likely that I'll be leading the
project, but someone else may be chosen. Given that we don't know when
Oracle will end their support it's hard to say any more.


Для ubuntu есть пакет openjdk-lts: launchpad.net/ubuntu/+source/openjdk-lts

Вот тут RedHat обещает, что OpenJDK 11 будет поддерживаться вплоть до октября 2024 года.

Первые три ссылки в google по запросу openjdk lts, что я делаю не так?

P.S. Также обратите внимание на AdoptOpenJDK
Про ubuntu не знаю
У RedHat LTS только для RHEL
AdoptOpenJdk не предоставляет LTS
У OpenJDK время жизни — 6 месяцев после релиза.
OpenJDK 12 еще не вышла, но багфиксы уже не бекпортят в OpenJDK 11

bugs.openjdk.java.net/browse/JDK-8210483
gdt получается что AdoptOpenJdk и сборки OpenJDK LTS в дистрибутивах — это все неофициальные сборки OpenJDK. А время жизни официального OpenJDK LTS всего пол года.
Официальный OpenJDK я имею ввиду OpenJDK от Java Community Process там где Intel, IBM, Credit Suisse, Software AG, RedHat.
Спасибо, что держите в курсе событий. Вообще в новости написано: «До апреля 2019 года компания Amazon намерена дополнительно сформировать LTS-ветку Corretto 11, основанную на OpenJDK 11. Поддержка Corretto 11 будет осуществляться до августа 2024 года.»
На сайте AdoptOpenJdk написано: «In addition, every three years one feature release will be designated as the Long Term Supported (LTS) release. We will produce LTS releases for at least four years. This assurance will allow you to stay on a well-defined code stream, and give you time to migrate to the next, new, stable, LTS release when it becomes available. » Разве это не про LTS?
И там сразу же в notes:
«LTS releases as long as the corresponding upstream source is actively maintained.»
Они ничего не фиксят и не бекпортируют.
Да, вроде как в этом и фишка, что не будет отдельной ветки AdoptOpenJdk. Вообще позиция насчёт LTS обсуждается здесь — mail.openjdk.java.net/pipermail/jdk-dev/2018-August/001830.html Если даже эти люди для вас не авторитет, я умываю руки :)
Процесс развития, изменения в определении Java, API – все это находится в руках Java Community Process, вступить в которое может каждый.

Так оракл же судился с гуглом из-за использования java API в андроиде?

забавно наблюдать бурление говн в комментах на хабре, так и знал что тут собрались сплошные владельцы транснациональных корпораций, которые сейчас стоят перед выбором как поступить.
ещё смешнее читать вопли про то, что джава умирает, оракл её умертвляет, оракл не даёт писать на джаве и так далее.
для простого «скрипт киди» ничего не меняется, для тех кто запускает халтурки сам тоже — используй openjdk или другие сборки коих скоро будет овер дофига. хочешь персонально чего-то от оракла — заплати, в этом мире ничего не делается бесплатно, тем более сам деньги зарабатываешь гоняя jvm
UFO just landed and posted this here
Есть только одна вещь, которую запрещено делать всем, включая Oracle: вносить изменения в код и публиковать его с закрытой исходной лицензией.


Это не так. Oracle может под какой угодно лицензией публиковать измененный код, так как у него copyright на этот код. А вот остальные да, не могут. И на самом деле никто не мешает Oracle выпускать новые версии чисто под коммерческой лицензией, кроме того, что кто-то сделает форк OpenJDK, будет его развивать и все разработчики переключаться на этот форк. Правда, фишка в том, что как раз тот кто сделает форк не сможет его публиковать под коммерческой лицензией (в этом смысл GPL лицензий), поэтому мотиваций делать форк кому-либо по большому счету не так много.

ЗЫ: Похоже автор забывает, что Oracle не просто продолжил развитие и поддержку Java, а купил целиком того, кто ее разрабатывал.
Sign up to leave a comment.