Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Нужен ли Linux для Java-разработчика? (here we go again...)

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Знаю, что был очень похожий топик dou.ua/forums/topic/475 и, как я понял, его можно свести к двум противоположным мнениям: 1) как среда разработки, Linux ничего не дает программисту по сравнению с Windows, кроме доп. геморроя; 2) разрабатывать лучше в среде, в которой будет работать приложение (RHEL, CentOS и т.п.).

Тем в нем, я не нашел четких ответов / единства мнений по следующим вопросам:

1) насколько в реале «знание Linux» является для работодателей ценным/важным в резюме Java-разработчика, особенно начинающего?

2) если является ценным/важным, в какой части Java-разработчику нужно «знать» Linux и для чего? Понимание файловой системы и разрешений? Написание беш-скриптов? Понимание особенностей архитектуры ОС -nix? ...

3) если Linux действительно упрощает разработку Java-приложений, то чем (в т.ч. в сравнении с Windows)? Какой дистрибутив?

P.S. Лично у меня пока (может к сожалению) быть не очень большой и информативный опыт с Linux:

— Linux Mint я пытался сделать основным десктопным ОС для ноутбука, но удалил после того, как оказалось, что: 1) чувствительность мышки нормально можно настроить только с криптическим беш-скриптом в автозагрузке (об этом были исписаны целые форумы), 2) нет нормальной поддержки гибридных видеокарт, 3) скромная (по сравнению с Windows) автономность работы ноутбука;

— на CentOS на виртуалке разворачивал сервер Glassfish. Работало.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
1) как среда разработки, Linux ничего не дает программисту по сравнению с Windows, кроме доп. геморроя;

Linux дает множественные вирт десктопы. Это реально удобно. После того как привыкаешь, работать на одиночном десктопе — просто невозможно :-). На винде есть эмуляторы, но из того что я видел — было уныло.

Linux дает нормальную консоль. Опять таки к консоли привыкнуть нужно. Но тут есть один момент касающийся джабы — поскольку разработка на джабе восновном под линуховые сервера (без графического интерфейсу). Разрабу какгбы нужно немного ориентироваться в консоли чтобы иметь возможность хотябы логи посмотреть, пофиксить чтото итд,
Во всем остальном — разницы нету.

— Linux Mint я пытался сделать основным десктопным ОС для ноутбука, но удалил
постав opensuse і забудь про всі проблеми
Нужен ли Linux для Java-разработчика?
Спрашивай правильно: Нужен ли Java-разработчик без знания Linux?

Я бы сказал, что киллер-фича интерфейсов командной строки примерно такая. Можно повторить команду в точности. Можно слегка подредактировать. Можно скопировать команду на другой сервер (например, тестовый). Можно сличить выхлоп (спасибо diff). Запостить в джиру или почту. Попросить клиента сделать «вот эту строчку» на проде, на который у самого нет доступа. Добавить команду в крон и выполнять еженощно. Ну и т.д.

Конечно, можно и пачку скриншотов прислать с обведёнными красным нужными полями и кнопками. Но бык всё-таки лучше © анекдот

Ну и аналогично grep логов может быть намного быстрее и информативнее, чем поиск аналогичной информации в GUI-шном журнале. Особенно если вхождения искомого надо, например, посчитать.

Так вот в плане командных интерфейсов Linux (или, уж если быть точным, инструментарий GNU — а линукс «всего лишь» его природная среда обитания) рулит, точка прописью.

В этом смысле учиться «писать бэш-скрипты» бесполезно, bash такой же язык, как и остальные, только страшненький. Лучше уж пайтон или схему. Учиться имеет смысл вот такой итеративной работе — ввёл команду, получил неожиданный результат, подредактировал и т.д. Всё это никак не поможет собственно в разработке, зато сильно облегчит диагностику и разрешение проблем. Если говорить об основных командах — я бы брал в первую очередь grep, sort, uniq, find, diff, wc и уже упомянутые git и ssh. Хотя может забыл что-то.

Как-то так.

Мне нравится на убунте. Все довольно оперативно работает. Бывают проблемы с подключением девайсов, правда, мейзу, например, но всем остальным — доволен.

Может, моя карма, но не получилось его подключить. adb не понимал что это и список девайсов был вот такого формата: ????? ?????
Нам его дали на пару часов, поэтому играться с ним времени не было и отдал его деву на винде

Позволяет избежать кучи мороки — например, ssh и git предустановлены (или в репозитариях) — не надо искать «правильную» версию. Редактора и системы контроля версий не норовят \r напихать в текстовые файлы. Работа (через SSH) с удаленным сервером очень прозрачная — одни и те же комманды, одни и те же параметры.

3) если Linux действительно упрощает разработку Java-приложений, то чем (в т.ч. в сравнении с Windows)? Какой дистрибутив?

на большинство пропулярных линуксдистрибютивов вполне можно поставить Eclipse, IntelijIDEA или NetBeans (какие там еще IDE-шки длдя жабы популярны?). так что берешь любой дистр, у которого в репозиториях есть более-менее свежие версии любимой IDE — и вперед)

На худой конец — с офф.сайта качаешь бинарник под линукс нужной разрядности, распаковываешь, и запускаешь главный скрипт (корторый запускает саму IDE-ху) (главное, чтобы java и jvm были установлены в системе)
Помню так запускал IDEA под убунтой (когда убунта у меня стояла).
А насчет каких-то консольных утилит для джавы — хз. Ибо не джавист. Но не думаю, что под линукс консольных утилит для джавы будет меньше, чем под винду (скорее наоборот).

3) скромная (по сравнению с Windows) автономность работы ноутбука;
ну если на ноут поставить какой-нить мегонавороченный дистрибютив (допустим тот же минт с самым навороченным графическим окружением) со всеми свистелками и перделками — то да)

Детский сад какой то, от куда вы беретесь
если считаешь что не нужен — не учи.
Просто базовое понимание устройства unix нужно что бы не городить гoвна за которое тебя будут ненавидеть и помоить понимающие люди. Когда люди пишут код на жаве вместо того что бы слепить залипуху в одну строчку с двумя пайпами — нужно молотком им пальцы ломать а потом просвящать
мак себе купи как основной комп — будет способствовать просвящению

как среда разработки, Linux ничего не дает программисту по сравнению с Windows, кроме доп. геморроя;
дальше можно не читать.

ну вот захотите вы пойти работать в компанию (например, одну скромную конторку с headquarter в mountain view), где винды просто нет, иначе как для специальных целей, а девелопмент воркстейшенс — линукс или мак (который тоже юникс)

и что вы будете делать?

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

Если это ТРЕБОВАНИЯ для поступления на работу — бреши что знаешь. Это не проверяют :)

Ні, під вікнами підняти робоче місце так само займає час. Але під лінухою того часу йде рази в три-чотири більше. Починаючи з банального вибору софту, і закінчуюючи ручним прописуванням аліасів шрифтам.

Що особливо дратує, що коли щось доведуть до нормального стану — його відразу припиняють підтримувати, випускаючи абсолютно нову версію, несхожу з попередньою, несумісною, та звісно з новими багами, недоробками, і принципами «я художнєґ, я так бачу».

взагалі то робоче місце можна налаштувати в декілька викликів необхідних команд з консолі, якщо там простий набір Java8 + IDE + ... , можна взагалі собі скрипт написати і не паритись, а ось з віндою 100500 лишніх кліків мишкою і т.д. + анприклад встановити Ruby на Вінду, то взагалі окрема тема, як на мене, якщо не треба під .NET писати, то необхідність вінди відпадає, як такої

1) Ценным совершенно не является
2) Обычно достаточно знать несколько консольных команд (посмотреть список задач, убить процесс, найти строку в логах или конфигах, создать или удалить файл/папку, переключиться на другого пользователя или выполнить команду из-под другого пользователя). Многие девелоперы вообще линукса не знают, и это на поисках работы никак не сказывается.
3) Не упрощает и не усложняет, но багов в любом дистрибутиве явно больше, чем в винде. Скрипты для баша писать проще, чем батники, но гуевых тулов в линуксе меньше и они похуже, чем винде, поэтому в целом комфорт разработки примерно одинаков.

беш-скрипты... (звон трескающегося стекла)

Не понимаю причины такой реакции. Англоязычные произносят тут через «э», так что всего лишь против неизвестной ТСу местной традиции.

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

1) насколько в реале «знание Linux» является для работодателей ценным/важным в резюме Java-разработчика, особенно начинающего?
ИМХО, зависит от конкретного проекта. Знаю проекты на джаве, где с линуксом вообще не приходится работать.
2) если является ценным/важным, в какой части Java-разработчику нужно «знать» Linux и для чего? Понимание файловой системы и разрешений? Написание беш-скриптов? Понимание особенностей архитектуры ОС -nix? ...
Опять же, зависит от проекта. Сталкивался с довольно базовыми вещами: работа с файлами(удалить, создать файл, линку на файл, просмотреть логи, найти строки по ключевым словам и тд и тп в конкретном файле/папках), права доступа, cron, curl, wget, puppet, bash script (к примеру, послать post запросы на 100500 инстансов апликухи, у которой в урле меняется номер конкретного инстанса), disk usage, архивировать, разархивировать, просмотр запущенных процессов, собственно, их «убийство» , деплой/рестарт/стоп/старт апликухи.
3) если Linux действительно упрощает разработку Java-приложений, то чем (в т.ч. в сравнении с Windows)? Какой дистрибутив?
Упрощает, если проект заточен под линукс, есть проекты, для запуска которых под виндой нужно с бубном недельку потанцевать, а под линуксом «из коробки» встают. Как по мне под линуксом легче установить и настроить нужные тулзы, вроде maven, grunt, nodejs и тд, можно сделать все, что нужно использовав лишь консоль. Какой дистрибутив — имхо, дело вкуса, если сам проект не завязан на конкретный дистрибутив. Лично мне нравится арч, но с ним много геммора, особенно новичкам.
2) нет нормальной поддержки гибридных видеокарт
в ноуте нвидиа+интел: bumblebee + bbswitch, один раз настроил и все отлично работает, при обновлении изредка обваливается, но как правило помогает перезапуск сервиса либо переустановка тулзы.
с амд, увы, не сталкивался
3) скромная (по сравнению с Windows) автономность работы ноутбука;
wiki.archlinux.org/index.php/laptop
wiki.archlinux.org/...ndex.php/Power_management
Для других дистрибутивов аналогичные тулзы должны быть.
в итоге, после настройки, ноут под линуксом раза в 2 стал дольше работать, при аналогичной нагрузке под виндой, естественно производительность несколько снизилась и настройка бывает порой очень мучительная и оно того не стоит, хочешь работать нормально — подключись к сети либо сядь за стационарник.

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

2. нужно знать что-то типа этого:
-работа с удаленной консолью (ssh)
-как задеплоить аппликуху на сервер
-как запустить/перезапустить сервер (томкет, джосс и тд), как в нем смотреть логи и где их искать
-уметь пользоваться утилитами — ps, grep, less, редакторами vi/vim или типа того — иногда нужно быстро исправить какой-нить конфиг на сервере, а гуя и удобных полоэкранных графических редакторов текста там нет
-как посмотреть что запущено, как убить процесс (kill dash nine рулит!)
-как запустить бэкап базы на сервере
то есть нужны навыки пользователя консольных систем и средние навыки админа, если ты будешь заниматься деплойментом и продакшн саппортом. но новичков и джуниоров обычно на такие адовые работы не назначают, по крайней мере сразу

3. упрощает то что большинство утилит разработчика (включая те же JDK, maven, ant, и тд) уже входят во многие дистры линукс, либо скачиваются менеджером пакетов за считанные секунды из репозиториев

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

по поводу дистров — для дома можно выбирать любой, а для продакшена оно обычно уже выбрано до тебя :-)
в домашнем секторе популярна ubuntu и ее клоны, как наиболее дружественная к пользователю
в ентерпрайзе часто встречается red hat enterprise, естественно без гуя и няшных десктопов

Не попробуешь — не поймешь, что для тебя лучше, т.к. в любом деле вкус играет роль.
У меня на домашнем две ОС: Linux Mint как основная и Win 10 как дополнительная.
На линукс пересел после того, как заебался выяснять, что отожрало пол диска С, почему возрос бут тайм, страдать от неудобной консоли (пытался найти любой адекватный аналог Guake и не нашел). При всем этом, у меня до этого винда жила 2 года без антивируса и жила бы еще столько, если бы я захотел — я знаю, за чем надо следить и как что чистить, что качать, а что — нет. Это я к тому, что руки вроде оттуда, а не потому я не шарю юзать инструмент.
Первое облегчение на линухе — установка программ. Даже когда нет в репозитории, а из сорцов не собирается (что бывает редко) — это не очень портит настоение, т.к. все остальное ставится парой строчек. Плюс я писал пет проект на node.js и работа с консолью значительно ускорила мои действия. Guake — one love. Производительность более заметна и прозрачна, чем на винде, если минимально шарить юникс. Да, не настолько удобно, как на винде. Да и полностью с нее не могу ливнуть — не всегда гимп и онлайн-фш заменит тру виндовый фотошоп. Есть трудности с железом (видеокарта и тачпад). Уверен их можно решить, но это некритично для меня. До этого пару лет назад сидел три месяца на арче (Arch Linux) — юзать можно, но нужно убить много времени, поэтому генка (Gentoo) и арч — не мой выбор.
Плюсы винды: удобство
Минусы: принцип работы системы
Плюсы линукса: прозрачная работа системы, экономит время (если немного шаришь, что делаешь)
Минусы: после винды не так удобно
Исходя из опыта, прихожу к тому, что надо покупать макбук :)

винда жила 2 года без антивируса
 Но начиная с windows 8 он же встроенный ?

да, это была 8.1, но я отключил всё, что нашел

С дружелюбным (к вирусам) интерфейсом.

пытался найти любой адекватный аналог Guake и не нашел
ConEmu.(www.conemu.ru)

Да! Это оно! Уже пару месяцев наслаждаюсь этой консолью =) Консоли реально не хватало раньше в винде. Теперь я не знаю, что может заставить меня перейти на линукс =)

IMHO, Java and Windows, это как с..ть кубиками...

именно для разработки не нужен
На то и кросфплатформенные продукты чтобы не зависеть от платформы.
годами писал на яве линукс ни разу не понадобился. Тестеры тестироваали на линухе а мне было пофиг.
главное взять за привычку имена файлов держать в нижнем регистре от греха подальше.

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

Дома поставил Ubuntu — не нарадуюсь, со временем перейду полностью.
— UI и сама система работает быстрее чуть ли не в разы.
— Нет всякой хрени непонятной, менюшек 20-го уровня с миллиардом флажков.
— Не жрет 2-4-6 гигов хз куда.
— Апдейты каждую неделю? are you serious? данунах!
— поставить еще одну версию JDK рядом — легко.
— родная для docker, что невероятно удобно для разработки. Не надо ставить cygwin на винду и страдать херней.

Мой вердикт Linux — если не лезть в дебри — замечательная система для java разработки.
Windows на работе — для .NET, игр и блондинок.

>Простите, но что же нужно делать с системой, чтобы UI работал в разы медленнее?

архитектура винды сильно завязана на реестр. когда он забивается, система начинает работать в разы медленнее (возникает непонятная загрузка CPU на пустом месте).
связано это с тем что приложения Windows и библиотеки обычно представляют собой набор COM-компонент каждкая из которых регистрируется в реестре, и при запуске активно идет поиск в нем.
симптоматично что винда работает быстро только первый месяц после ее установки, а после — чем дальше тем хуже, как только реестр засирается кучей ненужных установленных программ, которые устанавливаются либо самим пользователям, либо навязываются в нагрузку к чему-то (adware, spyware и тд)

как понять — по загрузке CPU, особенно характерно когда после старта системы загрузка 90% хотя ни одно приложение не запущено.
SSD это хорошо, ну и тот факт что ты программист (то есть обладаешь культурой безопасного пользования компом и интернетом) скорее всего играет роль. Девочки обычно кучу всякого spyware/adware на свой комп цепляют а потом спрашивают почему все медленно работает

Рабочая станция, дополнительного ПО нет. Шаровары нет. Игр нет. Через полгода работает в 2 раза медленнее, через год — в три раза. Правда HDD стоит. Linux дома в таких же условиях как работал так и работает.
Причем тут программист вообще?

Есть игры, шаровара, дополнительное ПО (пара ИДЕ, фотошоп, парочка САПРов) и все работает ок. ЧЯДНТ?

У меня дома мак ос стоит 4 года, работает так же быстро как в самом начале.

Бред.
Всі ці чистилки реєстра і проча х-ня.
На запуск впливають програми і сервіси з автостартів.
Чим менше на старті системи їх є, тим швидше все паше, логічно.

как среда разработки, Linux ничего не дает программисту по сравнению с Windows, кроме доп. геморроя;

Как среда разработки, Windows ничего не дает Java программисту, кроме геморроя. (ИМХО, на базе 15 -летнего опыта в Linux )

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

Будешь смеяться, но я как раз сижу в ЮБС сейчас и страдаю от корпоративного ада. Потому и написал о виндовз-геморрое. Одна отдушина — иногда случается пописать баш-скрипты в терминале.

о, брат по несчастью

++++
есть и красивый десктоп и консоль как в юниксах
единственное что раздражает это эпловская политика апдейтов и саппорта.
они навязывают новые версии ОС (которые не всегда лучше, а обычно сразу после выхода полны багов и глюков), и постепенно прекращают поддержку старых

насколько в реале «знание Linux» является для работодателей ценным/важным в резюме Java-разработчика, особенно начинающего?

С учётом, что сейчас чаще можно увидеть Java на Linux, чем на Windows, что сами оракловцы производят испытания и показы на конференциях на Linux — да, важно.

Это не означает доскональное знание от и до — достаточно базовых знаний архитектуры и уровень простого пользователя.

в какой части Java-разработчику нужно «знать» Linux и для чего? Понимание файловой системы и разрешений? Написание беш-скриптов? Понимание особенностей архитектуры ОС -nix? ...

Всё сказанное, понемножку.

если Linux действительно упрощает разработку Java-приложений, то чем (в т.ч. в сравнении с Windows)? Какой дистрибутив?

Если целевая система — Linux, то уже этим.
Некоторые вещи по управляемости системы под нагрузкой значительно легче отлаживаются под Linux (начиная с банальностей типа того, что сброс кэша дисков под Windows это путаные игры через WMI, а в Linux это одна строка через /proc). Оракловцы тесты по HWPMC изображают именно под Linux — это, думаю, неспроста, у них-то выбора достаточно.

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

Linux Mint я пытался сделать основным десктопным ОС

Сам по себе странный выбор — сейчас это не совсем адекватно управляемый гибрид нашлёпками поверх Ubuntu. Простая Ubuntu обычно лучше хотя бы согласованностью. Дальше можно двигаться в десятках направлений и устраивать споры, но лучше не в этой теме.

И вообще, для начала его надо было воткнуть в виртуалку, а не основной системой :) Это позволило бы экспериментировать с чем угодно, не теряя работоспособность.

не знаю, мне Linux Mint нравиться, пользуюсь с 12 версии, стоит и дома и на работе и все, вроде бі ок...

dou.ua/forums/topic/11972

беш-скриптов
фее
1) чувствительность мышки нормально можно настроить только с криптическим беш-скриптом в автозагрузке (об этом были исписаны целые форумы)
руки
2) нет нормальной поддержки гибридных видеокарт
теж руки. копай в сторону nvidia prime замість bumblebee

Нажаль, підтримку хардвара має зебезпечувати той, хто той хардвар робив. Якщо цього нема, настроювати альфа-версїї драйвера під лінухою, та розбиратися в кривих інсталяційних скриптах — те ще задоволення.

якщо зайти в gnome/kde/etc control panel і мишкою відрегулювати чутливість цієї ж мишки — це

настроювати альфа-версїї драйвера під лінухою, та розбиратися в кривих інсталяційних скриптах
то в мене для вас погані новини.

Для мене це не новини. Миша якраз регулюється (хоча з прискоренням треба довго звикати або RTFM). Але з дровами відео... особливо коли в тебе дедлайн, а воно каже «мені сьогодні щось глюкнуло, попрацюй в консолі»...

Але з дровами відео
один раз таке було, коли для відео дров встановив не ті заголовки ядра.
все інше — притягнуте за вуха.
якщо ще графіка не гібридна — взагалі жодних проблем. юзаю opensuse, на старому ноуті з одною відяхою, дрова ставляться в один клік.

ОДНОГО РАЗУ вистачить, якщо цей раз саме твій.

Це вирішується елементарно: компанія наймає адміна який спеціалізується саме на робочих місцях, і може зробити систему продуктивною саме для людей. Тоді саме адмін обирає які саме дистирибутиви буде підтримувати, який саме софт і якими внутрішніми серверами підкачувати апдейтами, як саме працюватиме антивірус і можливо серверний варіант, буде досліджувати проблеми ефективності робочих місць. І врешті решт, обиратиме залізо на якому це щастя найкраще працюватиме.

Тоді так — лінукс найкращий варіант, економія на софті буде більшою ніж зарплатня адміна, а економія часу персонала — це суцільний прибуток! Але настане чорний день, коли компанія вирішить покращити KPI та скоротити цього адміна або команду, або ж урізати їм зарплатню. І тоді станеться саме те, що зараз робиш ти: новим працівникам скажуть, що їхні проблеми притягнуті за вуха. Коли стане очевидно, яких втрат завдано — зроблять ще більше «покращення» стандартизацією робочих місць, покаранням за нерекомендований софт, а справжні винні — ныколи не будуть покарані, або навіть отримають премію за ефективність.

якщо ці самі лінукси ставляться на робочі машинки в рамках корпорації — для чого тут взагалі графічні дрова чи гібридна графіка? документи та іде відкриваються на дефолтному драйвері.

Але настане чорний день, коли компанія вирішить покращити KPI та скоротити цього адміна або команду, або ж урізати їм зарплатню. І тоді станеться саме те, що зараз робиш ти: новим працівникам скажуть, що їхні проблеми притягнуті за вуха. Коли стане очевидно, яких втрат завдано — зроблять ще більше «покращення» стандартизацією робочих місць, покаранням за нерекомендований софт, а справжні винні — ныколи не будуть покарані, або навіть отримають премію за ефективність.
це взагалі ніачьом, ніяк не відноситься до контексту діалогу

Таке буває лише, якщо поставити проприєтарні драйвера криво, коли уже на машині стоять фрішні. Або ж встановити ядро не з дистрибутиву, яке непідтримується наявною версією пропрієтарних драйверів відеокарти. Питання — А хулі перед дедлайном ставити «саме свіже ядро» чи «нові драйвери» — Руки чешуться??? А саме по собі таке не відбудеться (в історії було одне криве оновлення Х-ів в версії 7.х Убунти )

Підписатись на коментарі