LINUX.ORG.RU

Linux & Java Development

 , , , ,


0

4

Я - программист на Java, что-то среднее между Юниором и Медиумом - пока что обучаюсь. Работаю под ОС Windows с IDE IDEA, дома - OpenSUSE.

Вопрос: можно ли полностью перебраться на Linux, не теряя в производительности и удобстве? Проще говоря, удобно ли юзать Linux-based ОСи для Java разработчика? Есть ли какие-то подводные камни? Буду рад услышать дельные комментарии, заранее благодарен :)

Если не будет проблем с поддержкой железа, скорее всего отличий не заметишь. А если выучишь консоль (рекомендую потратить пару дней на advanced bash scripting guide, всю жизнь будешь вспоминать с благодарностью), то в отдельных моментах производительность увеличится.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Абсолютно согласен. Линукс для девелопера гораздо удобнее и логичнее.

observer ★★★
()

Есть ли какие-то подводные камни?

Вроде нету.

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

observer ★★★
()
Ответ на: комментарий от observer

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

С консолью вполне знаком - Гента была перед Сюзей. Но с удовольствием послушаю, спасибо :-)

UbuntuBasedHater
() автор топика

Это зависит

1) от проекта. Ну если тебе придется использовать что-то платформозависимое - то куда ты денешься.

2) от команды. Эти нехорошие люди могут делать фантастические вещи (в основном где-то в области выбора библиотек и сборки проекта) что под Виндой оно собирается, а у тебя - нет.

Я бы рекомендовал смотреть на команду. У меня в проекте тимлид и пм - сидят на Линуксе. Да и сам проект запускается только на линукс-серверах. Так что все подводные камни они выбрали уже до меня.

aidan ★★★★
()
Ответ на: комментарий от UbuntuBasedHater

С консолью вполне знаком

В таком случае, буду краток.

screen очень удобен для «сворачивания» приложений в консоле или чтобы структурировать фоновые задачи.

Масса утилит для работы со строками/потоками/файлами. В частности sed, awk.

Скриптовый язык Perl очень удобен в линуксе. Например $mystr = `cat somefile`;. В кавычки заключается любой код на bash, весь выхлоп попадает в $mystr. И это далеко не все.

mc хорош для беглого просмотра/поиска файлов/каталогов.

gplot очень удобен для визуализации графов/графиков. Очень легко адаптировать чтобы твоя программа юзала его.

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

observer ★★★
()
Последнее исправление: observer (всего исправлений: 1)
Ответ на: комментарий от UbuntuBasedHater

В данном случае я про Java - нет ли проблем с компиляцией, OpenJDK, работой написанного и т.д.

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

В общем то я думаю, что на 90% серверов, на которых крутится Java, стоит именно линукс и никаких проблем с ним быть не может.

Legioner ★★★★★
()
Ответ на: Это зависит от aidan

Спасибо.

1) от проекта. Ну если тебе придется использовать что-то платформозависимое - то куда ты денешься.

Неужто так часто встречаются приложения на Java под Windows?

Эти нехорошие люди могут делать фантастические вещи

Начиная с «import java.*» :-)

Скажите, правильно понимаю, что без разницы, где учить Java: хоть Linux, хоть Windows, хоть FreeBSD (это было бы идеальным вариантом!)? А ОСь для разработки выбирают исходя из платформозависимости проекта и удобства разработки? :-)

UbuntuBasedHater
() автор топика
Ответ на: комментарий от iZEN

Смотри выше. Я глобально о «профиты линукса для девелопера».

observer ★★★
()
Ответ на: комментарий от UbuntuBasedHater

А для чего Java на Win серверах? Точнее, зачем Win сервер под Java? 0_o

Ну Windows вроде ничем не хуже линукса кроме цены. Многие знают только Windows и желанием изучать что-то новое не горят, вот и ставят на ворованную венду жаву и в ус не дуют.

Legioner ★★★★★
()
Ответ на: комментарий от UbuntuBasedHater

Неужто так часто встречаются приложения на Java под Windows?

Проблема не в самом приложении, а в его зависимости от чего-то. Вот нужно тебе в системе документооборота написать интеграцию с Аутлуком и Офисом. Или с телефонной системой, когда у тебя есть только бинарники для работы с ней под оффтопиком.

А для чего Java на Win серверах? Точнее, зачем Win сервер под Java?

Куда заказчик скажет - туда и ставят. У многих администраторы только вин-сервера.

aidan ★★★★
()
Ответ на: комментарий от Legioner

Ну Windows вроде ничем не хуже линукса кроме цены

Они - разные. Linux изначально многовариативен (к примеру, та же куча систем логов, тонны конфигов, сборка ядра, «правильная» компиляция софта, etc). А в Windows все данность - за тебя все решили и выбрали, пользуйся. Но ОС - инструмент, а не культ, поэтому все стоит использовать там, где удобно. Но Win + Java... Странный выбор для компании :-)

UbuntuBasedHater
() автор топика
Ответ на: комментарий от UbuntuBasedHater

Для жава сервера это всё не важно. Логи пишутся и ротируются log4j или logback-ом, ОС тут никаким боком не участвует. Конфиги точно так же одинаковые и от ОС не зависят. От ОС нужно запустить жаву и не мешать ей работать.

Legioner ★★★★★
()
Ответ на: комментарий от aidan

Проблема не в самом приложении, а в его зависимости от чего-то. Вот нужно тебе в системе документооборота написать интеграцию с Аутлуком и Офисом. Или с телефонной системой, когда у тебя есть только бинарники для работы с ней под оффтопиком.

Хм... спасибо, не думал :-)

У многих администраторы только вин-сервера.

Я ни разу не работал в компании, где сервера на Win. То есть в 4-5 штуках. Есть ли такое в крупных компаниях?..

UbuntuBasedHater
() автор топика
Ответ на: комментарий от Legioner

Конфиги

Ну я же про ОС, а не про жаву :-) К примеру, планировщик IO? Или сопутствующий софт?

Логи пишутся и ротируются log4j или logback-ом

Логи системы - не лишнее :-D

От ОС нужно запустить жаву и не мешать ей работать.

А также стабильность и оптимизированность :-) Да и Linux-based как минимум меньше подвергнуты взломам - слишком частые изменения не дают написать/заюзать что-то универсальное и постоянное...

UbuntuBasedHater
() автор топика
Ответ на: комментарий от UbuntuBasedHater

Ну я же про ОС, а не про жаву :-) К примеру, планировщик IO? Или сопутствующий софт?

А что планировщик IO. Жава сервер с IO не общается (если мы про диски), это дело базы. Что там с сетевым стеком я не знаю, тут может линукс и выиграет, но утверждать ничего не буду.

А также стабильность и оптимизированность :-) Да и Linux-based как минимум меньше подвергнуты взломам - слишком частые изменения не дают написать/заюзать что-то универсальное и постоянное...

Ну попой в интернет такие серверы не торчат, а если ломают изнутри, хз, не думаю, что нормально обслуживаемая windows хуже линукса. Если это пиратская сборка ZverCD Server Edition, вопрос другой, но такой админ и из линукса ничего хорошего не сделает.

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

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Спасибо. Кстати, как думаешь, есть ли разница, на какой ОСи учить Java? :-)

Что там с сетевым стеком

Да все примерно одинаково, по тестам-то. Где-то выигрыш, где-то проигрыш :-)

ZverCD

На одном из серверов 1С давным-давно видел такую гадость. Удивительно, как их только не сажают - пофиг на пиратство, свистелки-то на сервере зачем? Кстати, сервер был совмещен со сканером и принтером, будучи доступным по сети...

В основном во всяких говноконторках

Или где цель оправдывает средства :-)

UbuntuBasedHater
() автор топика
Ответ на: комментарий от ii8_

Это давняя история, еще с работы плюсером. Писали библиотеку под *nix, так с убунтой постоянные проблемы были на ровном месте, вот просто все было усеяно граблями - ужасно с ней не везло. После первого теста она не смогла записать загрузчик, потом насовсем упала юнити с ничего, далее всех нае... то есть обманули с Mir'ом, пилят свои огороженные костыли, их GTK убог и вообще Марк - редиска. А OpenSUSE - лучший дистр, который видел, для меня, конечно. Раньше был на Дебиан, Генте, даже Слаку юзал - увы, не мое.

Работаю под ОС Windows с IDE IDEA

Потому что на «работе» было изначально, к тому времени долго (лет 6) не юзал винду - решил оставить потестить, а сейчас все настроено и работает, взвешиваю все - чтобы трясти админа на предмет разрешения установки Linux. Не дело пяти минут, знаете ли. ОСь - инструмент.

UbuntuBasedHater
() автор топика

Весь отдел Java-девелоперов сидит нав Fedora, Ides 13 ... и деплоимся на GlassFish запущенный на тех же линуксах (CentOS). Все отлично, на кой черт венда вообще не понимаю

anonymous
()

можно ли полностью перебраться на Linux, не теряя в производительности и удобстве?

Можно, приобретая в производительности и удобстве. Есть даже способы пускать разный виндософт вроде «тода» и прочих микрософтофисов - в виртуалбоксе.

Проще говоря, удобно ли юзать Linux-based ОСи для Java разработчика?

Юникс, и GNU/Linux в особенности, для разработчика использовать удобнее по определению, если, конечно, разработчик в курсе как пользоваться стандартными юниксовыми инструментами вроде sh, grep, sed, awk, etc.

Есть ли какие-то подводные камни?

Есть. Основной подводный камень заключается в том, что по какой-то непонятной причине >90% джава-разработчиков не знают ничего кроме винды и идеи, соответственно в больших проектах затачивают все скрипты и прочие вспомогательные вещи под винду. Даже в том случае, если результат их работы должен исполняться на Linux/Unix. Это доставляет огромные неудобства. И иногда даже дело заканчивается тем, что приходится создавать виртуальную машину с виндой и разворачивать окружение для разработки там.

asaw ★★★★★
()
Ответ на: комментарий от UbuntuBasedHater

В данном случае я про Java - нет ли проблем с компиляцией, OpenJDK, работой написанного и т.д.

С OpenJDK 6 могут быть проблемы и с компиляцией, и с работой, если в проекте используются довольно навороченные дженекрики. С этим сталкивался лично - пришлось использовать Sun JDK.

asaw ★★★★★
()
Ответ на: комментарий от asaw

кроме винды и идеи

А чем плоха IDEA? Очень приятная штука. Тем более JetBrains :-)

если, конечно, разработчик в курсе как пользоваться стандартными юниксовыми инструментами вроде sh, grep, sed, awk, etc.

Разве это приветствуется в Java проектах? Вроде как это платформозависимое, а принцип жавы - «write once run away»...

Спасибо большое за содержательный ответ :-)

UbuntuBasedHater
() автор топика
Ответ на: комментарий от Legioner

Ну Windows вроде ничем не хуже линукса кроме цены.

Винда, как серверная операционная система, хороша только тем, что «порог вхождения» для обычного Джо, не знающего ничего кроме настольной винды и возжелавшего завести себе свой собственный сервер, значительно ниже. В остальном у неё сплошные минусы. И самый первый из них - отсутствие менеджера пакетов.

asaw ★★★★★
()
Ответ на: комментарий от UbuntuBasedHater

А чем плоха IDEA? Очень приятная штука. Тем более JetBrains :-)

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

Разве это приветствуется в Java проектах? Вроде как это платформозависимое, а принцип жавы - «write once run away»...

Я имею в виду, что в процессе разработки довольно часто возникают задачи по перелопачиванию огромного массива исходников: что-то найти, изменить, сгенерировать и т.п. И вот тут юниксовые инструменты, и в особенности их GNU-версии, оказываются чрезвычайно полезны, позволяя экономить кучу времени и избавляя от обезьяньей работы.

asaw ★★★★★
()
Ответ на: комментарий от asaw

На жава-сервере не нужен менеджер пакетов. Системные программы обновляются автоматически. Жава, апп-сервер и своя программа должны обновляться самостоятельно из официальных источников, а не доверять каким-то пионерам. Если стоит линукс - можно утилизировать инфраструктуру и собирать свои пакеты для удобства деплоя, но никакого преимущества это не даёт и их точно так же можно собирать под венду (msi).

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Ну я тут не хочу вступать в дискуссию и вдаваться в подробности администрирования IT-инфраструктуры. Замечу только, что от того, что ты написал, пахнет теорией, а не практикой ;)

asaw ★★★★★
()

с 2006 разрабатываю на Java исключительно на Linux

Deleted
()
Ответ на: комментарий от asaw

серверная операционная система... отсутствие менеджера пакетов

Вот конкретно для джавы на сервере это не нужно. Сервер/софт/jdk обновляются через puppet/ansible/whatever. Эта та часть, что касается меня, как разработчика. Все что связано именно с сервером (обновления связанные с безопасностью, системное что-то и т.д.) - это уже дело админов, как им удобно так они и делают.

Плоха исключительно проприетарностью.

Тебе как-то приятней писать проприетарные программы исключительно свободными инструментами?

стандартен Эклипс

Пока что, по личному опыту, вижу что все наши партнеры в Англии и Франции тоже сидят на Идее.

aidan ★★★★
()
Ответ на: комментарий от aidan

Вот конкретно для джавы на сервере это не нужно.

Конечно, речь же не про джаву на сервере, а про сам сервер.

Тебе как-то приятней писать проприетарные программы исключительно свободными инструментами?

Да. И мавеновскими репозиториями тоже очень приятно пользоваться.

asaw ★★★★★
()

Странный вопрос. Под GNU/Linux писать код на java априори удобнее и производительнее. Под Шиндошс неприятнее и неудобнее. И есть подводные камни, например, отсутствие нормального эмулятора терминала.

BattleCoder ★★★★★
()

На Java как раз все и кодят сугубо на Linux, за исключением парочки недобитых маководов

vertexua ★★★★★
()
Ответ на: комментарий от UbuntuBasedHater

Типо нашелся тот редкий админ в 2013, который предпочитает Windows. Или legacy с каким-то вендокодом на том же серваке. Иначе не нужно

vertexua ★★★★★
()

Намного удобнее.

Начиная с нормального русского вывода в терминале и заканчивая apt-get install ant/maven/gradle вместо скачивания и питания в PATH.

Adonai ★★★
()

Можно. Особенности есть, как везде. Освоишься быстро.

Deleted
()
Ответ на: комментарий от UbuntuBasedHater

Это давняя история, еще с работы плюсером. Писали библиотеку под *nix, так с убунтой постоянные проблемы были на ровном месте, вот просто все было усеяно граблями - ужасно с ней не везло. После первого теста она не смогла записать загрузчик, потом насовсем упала юнити с ничего, далее всех нае... то есть обманули с Mir'ом, пилят свои огороженные костыли, их GTK убог и вообще Марк - редиска.

Это нужно заскринить.

Akamanah ★★★★★
()
Ответ на: комментарий от asaw

Да. И мавеновскими репозиториями тоже очень приятно пользоваться.

Не распарсил. Проприетарная IDE/редактор как-то мешает тебе пользоваться мейвен-цетралом или любыми другими репозиториями в проекте? Нам же были дарованы permissive лицензии (большинство джава либ именно под ними).

aidan ★★★★
()
Ответ на: комментарий от asaw

Тогда перечитай свой вопрос.

IDE - инструмент, библиотека - материал/ингредиент. Повторяю вопрос. Почему проприетарная IDE мешает использовать библиотеки из мейвена?

aidan ★★★★
()
Ответ на: комментарий от UbuntuBasedHater

Поделитесь софтом, пожалуйста

http://svnweb.freebsd.org/ports/head/java/

% pkg info -r openjdk-7.45.18
openjdk-7.45.18:
	swt-3.5.2_2
	swt-devel-3.7.1_1,1
	jboss72-7.2.0_1
	jetty-8.1.11
	maven3-3.0.4
	rssowl-1.2.3_9
	vuze-5.1.0.0
	apache-ant-1.8.4
	groovy-2.0.5
	jenkins-1.543

Eclipse 3.7.1 и Eclipse 4.2 ставятся из портов, но для сборки требуют openjdk6. Не пользуюсь.

NetBeans 7.4 есть порт: http://www.freshports.org/java/netbeans/ но пользуюсь дистрибутивом из ZIP-архива, развёрнутым в домашний каталог. GlassFish 4.0, развёрнутый из IDE, работает с Java EE-приложениями.

JetBrains IDEA 13 CE тоже работает. Android Studio на ней ещё предтстоит попробовать.

Для Sun WTK 2.2 под FreeBSD раньше выкладывал здесь скриншоты.

iZEN ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.