Помимо самого языка Java, вам необходимо изучить java-фреймворк. Подобно тому, как вы должны изучить структуру .net в дополнение к языку (C# / VB).
Насколько важно знать unix? Или, скорее, на каких областях unix следует сосредоточиться?
Видя, как много людей запускают приложения на основе Java (настольные / веб-версии) на ящиках unix, какие навыки unix вам нужны? Мы просто говорим о базовом перемещении по каталогам, создании файлов и т. д. Или это еще не все?
Unix! = Linux, кстати, они похожи, но разные.




Я думаю, ваша метафора означает, что вы должны изучать не только сам язык, но и библиотеку Java.
Конечно, знание UNIX немного поможет, так как расширяет ваши общие знания, но я не думаю, что это вообще имеет прямое отношение к Java.
На самом деле, вам не нужны навыки работы с Unix непосредственно для написания приложений на основе Java. Однако, если вы хотите разрабатывать приложения на основе java для модулей unix и развертывать их там, вам необходимо хорошее рабочее понимание того, как работать и администрировать модули unix.
Но для упомянутых вами областей (перемещение по каталогам, создание файлов) вы будете использовать API Java, которые лишь изредка касаются специфичных для Unix ("\ n" vs "\ r \ n", каталоги с корнем "/" и т. д.) Информация. Когда они соприкасаются, это не то, что вам нужно знать с точки зрения программирования, это то, что вам нужно знать с точки зрения пользователя / администратора.
Для обеспечения переносимости лучше, чтобы программа на Java не использовала специфичную для Unix информацию, среди прочего, используя System.getProperty ("line.separator") вместо '\ n' и т. д. См. GetProperty из java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html
Вам нужно не только знать, как перемещаться по каталогам, но и редактировать файлы с помощью grep. Вам также необходимо знать, как выполнять базовое управление процессами. Но необходимый вам уровень детализации зависит от того, что вы хотите делать в системе unix. Например. веб-разработка требует запуска веб-контейнера, такого как tomcat. Вы, вероятно, захотите изучить менеджер пакетов вашей выбранной системы.
Это зависит от вашей ОС. Вы можете заниматься разработкой на Java в Windows, и в этом случае знания Unix / Linux не требуются. Тем не менее, даже в Windows утилиты GNU / Cygwin могут быть полезны.
Не важно для самого языка.
Вы можете очень хорошо выучить java и никогда не касались unix-бокса.
Однако если вы хотите выполнить развертывание на сервере unix, вам следует знать только основы.
Пути к файлам, новые строки, разрешения и т. д., Но необходимые знания можно получить после нескольких часов набора текста в терминале.
Большая часть специфики ОС с самого начала абстрагируется от языка. Те, которые нельзя абстрагировать (например, cron), остаются позади.
Ответ, прочитанный в маркетинговых материалах Sun, заключается в том, что Java кроссплатформенный, поэтому вы этого не сделаете.
Практический ответ заключается в том, что вам нужно знать достаточно, чтобы запустить собственное приложение на платформе, на которой вы планируете его использовать. Знакомство с конфигурацией Apache или Tomcat помогает, если вы работаете с веб-разработкой, равно как и знание того, как использовать основные инструменты сетевого анализа - команды ifconfig, netstat и traceroute полезны. Инструменты доступа к файлам также необходимы для работы системы - изучите chmod и chown и то, как работают эти команды.
Настольным системам это проще, так как большинство оконных систем очень хорошо работают на кросс-платформенных, но вам все равно нужно немного знать о том, как структурированы файловая система и разрешения.
Я бы проголосовал за это, но я не хочу портить идеальную 666 репутацию плаката
Вам действительно не нужны навыки работы с Unix для использования Java, но если вы это сделаете, у вас будет хороший набор инструментов, подходящий для любого типа разработки. Я определенно ценю возможность поиска файлов с помощью grep для всего дерева исходных текстов, использования Perl для генерации кода и так далее. Даже простой подсчет всех строк исходного кода может быть трудным в мире только с графическим интерфейсом. Знание основных инструментов командной строки Unix сделает вас лучшим разработчиком imo.
Я предполагаю, что вы говорите об обучении, а не о разработке полномасштабного проекта. Из-за JVM, который по видению должен предоставлять унифицированный API для программистов, независимо от базовой системы, программы Java предназначены для написания способом, не специфичным для базовой системы (вплоть до использования JNI и т. д. ').
Это означает, что как автор небольших программ для обучения, ваши знания о подкладочной системе должны быть минимальными.
Если вы не используете IDE, вы должны хотя бы знать, как запускать javac, java из командной строки и тестировать свою программу.
Если вы используете IDE, например Затмение, с момента запуска IDE вы должны ожидать, что опыт будет почти изолирован от системы внизу.
Однако имейте в виду, что это видение, и всегда рекомендуется знать хотя бы немного о том, что происходит в вашей собственной системе.
Вам не нужно знать * NIX для разработки Java-приложения, возможно, если вы собираетесь запускать его на машине * NIX или если он использует что-то очень привязанное к * NIX, будет хорошо, если вы будете знать основы имена файлов и разрешения, например.
Необходимость знания * NIX связана с необходимостью развертывания приложения на сервере * NIX. Если это так, будет хорошо, если вы что-то знаете о системных переменных (например, установите JAVA_HOME), типовой структуре каталогов машины * NIX и базовом использовании (создание файлов, каталогов, удаление, символические ссылки .. .).
Я думаю, что очень хорошо знать некоторые сценарии (bash, csh, sh). В зависимости от сложности развертывания это может дать вам, например, дополнительные баллы внешний вид вашего босса.
Java является кроссплатформенной, поэтому ... как "знание" unix не имеет никакого отношения к форме или форме ...