nixp.ru v3.0

5 ноября 2024,
вторник,
07:50:16 MSK

22 октября 2010, 13:04

Apple избавляется от Java в Mac OS X

3
Счастливое яблоко?
Счастливое яблоко?
Иллюстрация с сайта Greatdaneband.Com

Неужели Apple действительно заинтересована в уменьшении числа средств разработки для своей системы? В очередном обновлении к последней версии Mac OS X — 10.6 Update 3 — поддержка Java объявлена «нежелательной» (deprecated).

В официальной документации по обновлению сообщается, что «разработчики больше не должны полагаться на поставляемую компанией Apple реализацию Java в будущих версиях Mac OS X». При этом Java, входившая в состав релизов Mac OS X 10.5 и 10.6, будет поддерживаться в соответствии с принятыми циклами продуктов.

Это означает, что Apple теперь может формально «безболезненно» (для своих разработчиков) исключить Java из поставки будущих версий Mac OS X, а авторы Java-приложений для этой платформы останутся не в самом выгодном положении (для запуска их ПО рядовым пользователям Mac OS придется совершать дополнительные действия, чтобы установить JRE).

В общем-то, данный шаг вряд ли можно назвать удивительным в контексте политики Apple — компании, которая привыкла сама указывать пользователям, что и как им лучше использовать. Можно предположить, что это еще и своеобразная корпоративная «игра» с корпорацией Oracle, которой теперь принадлежит Java и которая уже показала, что намерена воспользоваться полученными патентами по их прямому (юридическому) назначению.

Постоянная ссылка к новости: http://www.nixp.ru/news/10798.html. Дмитрий Шурупов по материалам Apple Developer, osdir.com.

fb twitter vk
Антон

Картинка намекает?

png

Да давно пора уже джаву задвинуть подальше, и не только на маке.

ungzd

А какие альтернативы? Дотнет?

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

Если брать десктопные приложения, то почти все IDE на джаве. Только не надо говорить что надо использовать емакс вместо них и будет счастье.

Какой ещё emacs? VIM only and forever!111[/sarcasm]

Строго говоря, для emacs есть проект CEDET, у которого есть шансы однажды зарулить как минимум опенсорсные IDE.

Вроде как ничего альтернативой выглядит Vala.

png

CEDET он же стремный.

Etags (jtags) и нормал.

lexx

жава гамно. всем по емаксу!!!

DAV

Как какие 0_О

Вы о чем вообще???? Qt, например, великолепная альтернатива! И работает прекрасно как на Linux’е, Unix’е, Mac’е так и на винде и еще на куче платформ, в том числе и мобильных. Писать на ней не сложнее чем на яве, а то и проще. При этом никаких виртуальных машин — чистый C++, прекрасные интерфейсы делаются очень быстро, реализовано множество современных паттернов. Бери и пользуйся одним словом.

lexx

qt cool согласен!

png

Согласен про QT. Если бы он еще на чистом C был то вообще круто бы было.

myst

Уж не знаю, кто у вас там, а мне сотрудники Google говорили, что переписывают проекты с Java на C++. И было это почти 3 года назад.

Что такое IDE? Чем плох Emacs?

myst

Что такое IDE? Чем плох Emacs?

Emacs — это (если не использовать CEDET) DE. Не Integrated. Отличным примером IDE я считаю IntelliJ IDEA сотоварищи (RubyMine, PhpStorm, PyCharm), Visual Studio + ReSharper/VisualAssist. Ну то есть это среды разработки, позволяющие (в идеале) разрабатывать ПО, не переключаясь в друге приложения.

Emacs по умолчанию, например, не умеет подсвечивать вызовы пользовательских функций в erlang-mode. Определения он подсвечивает, да — тут много мозгов не нужно, тупо регэксп, который к тому же легко ломается. А вот сохранить в уме все определения функций проекта, пропарсить исходник, сообразить, что вот этот X() — это вызов именно юзерской функции, и выделить этот X особенным образом (а потом легко и просто, скажем, переименовать) — вот такое erlang-mode не умеет. Хотя в принципе такое реализовать возможно — благодаря elisp под капотом. Ну и лучше писать сразу плагин к CEDET, да.

png

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

Идея — круто, пока не возникает потребность сделать что-то чего там нет.

Да эти все рефакторинги — только поверхностная экономия времени.

Legacy/3rdparty код никогда не использовали? Там рефакторинг частенько пригождается.

rgo
develop7

Legacy/3rdparty код никогда не использовали? Там рефакторинг частенько пригождается.

Использовал. Там было порядка 10k строк. Я неделю занимался рефакторингом. Плюнул, и переписал с нуля за две недели. До сих пор убеждён, что код стал гораздо лучше, чем он мог бы быть, даже если бы его рефакторингом занималось бы 10 программистов в течение года.

png

Вот как раз чужой код мне и было бы страшно рефакторить автоматически. Свой еще ладно.

Страшно? Вообще для предотвращения регрессий используются автоматизированные тесты. Впрочем, ССЗБ.

png

А вам дадут время на то чтобы покрыть тестами тонну legacy кода?

Не дадут — значит, ССЗБ. Потому что тестить руками — ненадёжно.

myst

Зачем всё это? Зачем подсветка? Вы сейчас много написали о том, как круто, когда есть свистоперделки. Не знаю, может быть вам за это платят, а мне платят за код. И в редакторе я его пишу, а не пялюсь на какую-то подсветку. Проблем с запомнить функции с которыми я работаю у меня тоже почему-то никогда не возникало. Может стоит потренеровать память? И да, я все делаю не выходя из Emacs, ведь в этом и есть его основное удобство.

rgo
myst

И да, я все делаю не выходя из Emacs, ведь в этом и есть его основное удобство.

Странно… Мне, почему-то, казалось, что ты поклонник vim.

myst

Зачем всё это? Зачем подсветка? Вы сейчас много написали о том, как круто, когда есть свистоперделки. Не знаю, может быть вам за это платят, а мне платят за код. И в редакторе я его пишу, а не пялюсь на какую-то подсветку.

Тут ты не совсем прав. Когда привыкаешь к подсветке, очень раздражает её отсутствие. И даже не просто раздражает, а возникают проблемы восприятия. Наверное, к этим проблемам можно привыкнуть. Но я уверен, что всё же подсветка полезна.

Но насчёт подсветки вызовов функций, я согласен — это именно что «свистоперделки».

develop7
myst

Что такое IDE? Чем плох Emacs?

А вот сохранить в уме все определения функций проекта, пропарсить исходник, сообразить, что вот этот X() — это вызов именно юзерской функции, и выделить этот X особенным образом (а потом легко и просто, скажем, переименовать) — вот такое erlang-mode не умеет.

Ну вообще, есть мнение, что не-ручное изменение сорцов — это не-труЪ. Если сорец изменяется скриптом, значит в нём плодятся баги. На erlang’е я не писал, но по-моему, переименовывать функцию приходится, во-первых, редко, во-вторых это делается через query-replace-regexp в интерактивном режиме.

Если же рефакторинг кода всё же нужен, то надо просто выбирать более популярный язык. Скажем для C, я где-то видел мод для емакса. Правда за него денег хотели, и я не стал покупать. Так что отзывов написать не могу. Единственное что скажу: мой опыт рефакторинга существующего кода, сводится к простому девизу: проще написать с нуля, заглядывая в существующие сорцы исключительно для справки.

myst

> Мне, почему-то, казалось, что ты поклонник vim.

Давно это было, но правда.

rgo

myst

Что такое IDE? Чем плох Emacs?

А вот сохранить в уме все определения функций проекта, пропарсить исходник, сообразить, что вот этот X() — это вызов именно юзерской функции, и выделить этот X особенным образом (а потом легко и просто, скажем, переименовать) — вот такое erlang-mode не умеет.

Ну вообще, есть мнение, что не-ручное изменение сорцов — это не-труЪ. Если сорец изменяется скриптом, значит в нём плодятся баги. На erlang’е я не писал, но по-моему, переименовывать функцию приходится, во-первых, редко, во-вторых это делается через query-replace-regexp в интерактивном режиме.

Если же рефакторинг кода всё же нужен, то надо просто выбирать более популярный язык. Скажем для C, я где-то видел мод для емакса. Правда за него денег хотели, и я не стал покупать. Так что отзывов написать не могу. Единственное что скажу: мой опыт рефакторинга существующего кода, сводится к простому девизу: проще написать с нуля, заглядывая в существующие сорцы исключительно для справки.
источник

Вот то-то и оно, что мнение. Некомпетентное, кстати. И не забудем почтить минутой молчания критерии труЪшности, ага.

rgo
develop7Вот то-то и оно, что мнение. Некомпетентное, кстати. И не забудем почтить минутой молчания критерии труЪшности, ага.

Критерий — безбажность. И я бы не советовал Вам его хоронить раньше времени.

rgo
develop7Вот то-то и оно, что мнение. Некомпетентное, кстати. И не забудем почтить минутой молчания критерии труЪшности, ага.

Критерий — безбажность. И я бы не советовал Вам его хоронить раньше времени.

От регрессий избавляемся с помощью регрессионных тестов. Автоматических, как правило. Прогнали тест, убедились, что всё по прежнему работает — вот и всё.

 

Вообще же правка кода посредством преобразования AST (именно так это делается в IDE) очевидно является более надёжной, чем поиск/замена буковок по регэкспам. Однако существенно более сложна в реализации. Собственно, почему оно и ест больше ресурсов, и отсутствует во всяких geditах.
/>

/>Странно, а мне платят за результат.

myst

Зачем всё это? Зачем подсветка? Вы сейчас много написали о том, как круто, когда есть свистоперделки.

Кому свистеть и так далее, а кому полезные инструменты. По всей видимости, вы просто не понимаете, о чём речь. Несмотря на то, что уверенно и безапелляционно об этом рассуждаете.

myst

Не знаю, может быть вам за это платят, а мне платят за код. И в редакторе я его пишу, а не пялюсь на какую-то подсветку.

А мне платят за результат, и IDE мне реально помогают достичь его быстрее. А подсветка помогает быстрее структурировать код и не отвлекаться на ненужные детали.

myst

Проблем с запомнить функции с которыми я работаю у меня тоже почему-то никогда не возникало. Может стоит потренеровать память? И да, я все делаю не выходя из Emacs, ведь в этом и есть его основное удобство.

Во фреймворке, с которым я работаю, что-то около 200 классов. В текущем проекте одной бизнеслогики на ещё 50 классов (по 5-7 методов). Ключевое слово — задолбаюсь память тренировать, для рутины есть компьютер. Частоиспользуемые сигнатуры я помню, а редкоиспользуемые — сюрприз — мне подсказывает IDE.

Ну и я умолчу о всяких приятных плюшках вроде «перекрыть метод»/«реализовать метод интерфейса» в один аккорд, полуавтоматических рефакторингов и т.д.

myst

> По всей видимости, вы просто не понимаете, о чём речь.

Поверьте, я очень хорошо понимаю, о чём речь. Может быть даже лучше, чем вы.

> А мне платят за результат, и IDE мне реально помогают достичь его быстрее. А подсветка помогает быстрее структурировать код и не отвлекаться на ненужные детали.

Если ваш код так сложен, что в нём есть ненужные детали, вы делаете это не так.

> Во фреймворке, с которым я работаю, что-то около 200 классов. В текущем проекте одной бизнеслогики на ещё 50 классов (по 5-7 методов).

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

> Ну и я умолчу о всяких приятных плюшках вроде «перекрыть метод»/«реализовать метод интерфейса» в один аккорд, полуавтоматических рефакторингов и т.д.

Это что ещё за?

> Поверьте, я очень хорошо понимаю, о чём речь. Может быть даже лучше, чем вы.

Речь о плюшках, предоставляемых IDE, вроде тех, что я привёл. Ваши edlinы так могут? Какими IDE вы пользовались/пытались пользоваться и как долго?

> Если ваш код так сложен, что в нём есть ненужные детали, вы делаете это не так.

Конечно, не так. Вместо того, чтобы есть кактус и восхищаться «а колючки-то совсем тупые» я ещё и жаловаться смею. Ужас. Святотатство.

> Вы работаете с продуктом, который отвратительно спроектирован, а рассуждаете так, будто это норма.

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

> Это что ещё за?

В общем, делаем так.

Запускаем Eclipse4Java/Netbeans/IDEA, открываем какой-нить проект на Java и последовательно проходимся по пунктам меню Refactor.

png

develop7, судя по тому что вы пишете — вы недавно кодите за деньги, проект убили до вас, и вы очень боитесь потерять вашу работу, поэтому и используете все эти среды и рефакторинги для создания видимости эффективной работы, типа закоммитил много строчек кода. Вот сколько я рефакторил код — как-то эти автоматические переносы кусков кода не особенно помогают, когда нужно его улучшить принципиально, а не впихнуть пару паттернов чтобы еще больше запутать код. Еще вы наверно много пользуетесь интерфейсами, наследованием и подобной хренью, на них все эти рефакторинги и работают, а не на нормальном относительно чистом коде.

> вы недавно кодите за деньги

Мимо. 6 лет скоро. Хотя кому и 20 — не показатель. Дада, я знаю, что у местных экспертов по всему средний стаж кодинга за деньги — 45 лет, спасибо.

> проект убили до вас

мимо.

>вы очень боитесь потерять вашу работу

мимо.

> используете все эти среды и рефакторинги для создания видимости эффективной работы

мимо. C IDE я работаю эффективнее, чем в этих ваших edlinах. И фреймворки, которые используют эти_ваши_паттерны, тоже помогают мне работать эффективнее.

> эти автоматические переносы кусков кода не особенно помогают, когда нужно его улучшить принципиально

Качественного скачка за программиста не сделает никто (очень странно, что я вообще вынужден это говорить). А вот всякие рутинные операции вроде неоднократно упомянутого переименования методов/классов или правки сигнатуры функции/метода IDE существенно облегчают. А редакторы — нет.

> впихнуть пару паттернов чтобы еще больше запутать код

Паттерны не «впихивают». Паттерны используют. И используют их не затем, чтобы запутать код — а чтобы сделать его проще в понимании и обслуживании. Ну а если в мозг не помещается — ну ничего, со всеми бывает.

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

myst

> Речь о плюшках, предоставляемых IDE, вроде тех, что я привёл. Ваши edlinы так могут?

А должны?!

> Какими IDE вы пользовались/пытались пользоваться и как долго?

C++ Builder, Visual Studio, Eclipse. Очень недолго — все они, как и сама идея уберкомбайнов, ущербны. Извините, если я вас расстроил.

> Вместо того, чтобы есть кактус и восхищаться «а колючки-то совсем тупые» я ещё и жаловаться смею.

Вы же и восхищаетесь колючками в коде.

> Вообще, для начала, было бы неплохо вкурить предметную область, покрываемую этим продуктом…

Я не первый год вкуриваю и прикидываю, чтобы знать, что 200+50 классов — это пиздец, а не архитектура. Такое делают ООП-фанбойные джедаи, начитавшись макконелов, фоулеров и GoFов.

> Запускаем Eclipse4Java/Netbeans/IDEA, открываем какой-нибудь проект на Java и последовательно проходимся по пунктам меню Refactor.

Код, с которым я работаю, не требует того, что вы называете «рефакторинг», потому что он написан на основании здравого смысла, а не «передовых техник и шаблонов».

> А должны?!

Нет-нет, что вы — ведь это же не нужно ;)

> Очень недолго

Я что-то такое и предполагал :) В общем, предубеждение — страшная сила, как я и говорил.

> Извините, если я вас расстроил.

Напротив, даже повеселили :) В частности, категоричностью. Что ни мнение — то либоНЕНАВИСТЬ!!!1111, либо ОЙКАКАЯНЯШЕЧКАОБОЖАЮПРОСТОНЕМОГУ.

> Я не первый год вкуриваю и прикидываю, чтобы знать, что 200+50 классов — это пиздец, а не архитектура.

Полутора лет тоже недостаточно, поверьте.

С другой стороны, если вы не планируете поддерживать собственные проекты, то такой подход тоже имеет право на жизнь. Работает, и ладно. Ну подумаешь, придётся переписать 70% кода для реализации нетривиальной хотелки клиента — ну и что, киллеров не наймут же, правильно? Зато всегда будет работа, вот.

> Вы же и восхищаетесь колючками в коде.

С чего вы это взяли?

> начитавшись макконелов, фоулеров и GoFов.

Вообще паттерны проектирования хороши тем, что их не нужно выдумывать. Они есть уже сейчас, и достаточно гибки, чтобы собрать из них порядка 90% задачек. Таким образом экономится самый ценный ресурс — время программиста.

И да, коль уж Фаулер сотоварищи — ламо маздайное, посоветуйте, что же нужно читать. М?

На самом деле не «emacs не умеет…», а «erlang-mode не умеет…». Но с т.з. юзера это неважно.

Кстати, CEDET вроде как поддерживает плюсы полностью.

png

Да на джаве по-мойму основная проблема не сам язык и не платформа, а то, что наворочено много фреймворков и чтобы сделать простую вещь нужно 50 библиотек, а кодить всё руками люди понемногу отвыкают, да и смысла нет раз уже всё закодили. Как результат — тяжеловесные приложения (и по объему и по итоговой сложности кода  — в том числе библиотечного).

Да Гугль вообще не показатель, что они там используют и на чем у них что написано. Думаю поиск у них не на джаве написан. А больше ни одного более-менее юзабельного продукта у них нет (пишу не для разведения флейма, а потому что так думаю. Гмайл не в счет — веб интерфейс мне лично надоел, простые клиенты больше нравятся).

Ну я использую емакс, а до этого пользовался как раз основными иде на джаве по очереди в течение лет 6 наверно (идея-нетбинс-идея-эклипс в такой последовательности). Ну и доволен в общем-то и назад не хочется.

Alexander P.

Qt хорошая платформа, но писать на C++ это совсем не тоже самое, что на Java.

Думаю, Qt с  C++ это хорошая альтернатива, в довольно обширной области, но не во всем.

Например, в области бизнес-приложений Java предпочтительнее (имеется в виду Java EE). Занимаюсь разработкой в этой области несколько лет и могу сказать, что в серверной части ничего лучше серверов на базе JavaEE найти не удалось. Что касается клиентской части, то есть идеи переноса кода с JavaSE на Qt с сильным «утоньшением» клиента (фактически на клиенте останется только UI на Qt).

png

А спринг?

Дмитрий Шурупов

Петиция по теме — www.petitionspot.com/petitions/macjdk («Contribute the Apple JDK source to OpenJDK»).