• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Should Java developers need to learn unix/linux?

 
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi guys,

I would like to ask if does java programmers need to learn basic unix/linux?

I studied and graduated a course which is not related to Java programming or any computer related subjects but I did self study and learn java by myself and became a Java web developer and luckily had a job. In the past, I encountered an app that needs to deploy in a linux environment. Luckily I had a colleague that knew linux commands and he did those stuffs.

Recently I saw a short course near our area that offers basic unix/linux for 40 hours and I'm not sure if is it worth to study it (as it may take my time, money and knowledge space on my brain ).
Here are what they teach:

Module 1: Overview
-UNIX History
-UNIX Principles
-GNU Project / FSF
-GPL - GNU General Public License
-Linux Origins
-Why Linux?
-Recommended Hardware Specifications
-Local Logins
-Virtual Consoles
-The Xorg GUI Framework
-Xorg Graphical Environments
-Starting Xorg
-Changing Your Password

Module 2: Running Commands and Getting Help
-Running Commands
-Some Simple Commands
-Getting Help
-The whatis Command
-The --help Option
-Reading Usage Summaries
-The man Command
-Navigating man Pages
-The info Command
-Navigating info Pages
-Extended Documentation
-Red Hat Documentation
-Hands-on Lab: Getting Help with Commands

Module 3: Browsing the Filesystem
Linux File Hierarchy Concepts
Some Important Directories
Other Important Directories
Current Working Directory
File and Directory Names
Absolute Pathnames
Relative Pathnames
Changing Directories
Listing Directory Contents
Copying Files and Directories
Copying Files and Directories: The Destination
Moving and Renaming Files and Directories
Moving and Renaming Files and Directories: The Destination
Creating and Removing Files
Creating and Removing Directories
Using Nautilus
Moving and Copying in Nautilus
Determining File Content
Viewing an Entire Text File
Viewing Text Page by Page

Module 4: The bash Shell
bash Introduction
bash Heritage and Features
Command Line Shortcuts: File Globbing
Command Line Shortcuts: The Tab Key
Command Line Shortcuts: history
Command Line Expansion: Tilde
Command Line Expansion: Variable and String
Command Line Expansion: Command and Math
Protecting from Expansion: Backslash
Protecting from Expansion: Quotes
History Tricks
Command Editing Tricks
Command Editing Tricks: Editing Modes
gnome-terminal

Module 5: Standard I/O and Pipes
Standard Input and Output
Redirecting Input and Output
Redirecting Output
Redirecting Standard Output
Overwriting or Appending
Redirecting Standard Error
Redirecting Both Standard Output and Error
Redirecting Input
Using Pipes to Connect Processes
Useful Pipe Targets
tee
Hands-on Lab: Standard I/O and Pipes

Module 6: Users, Groups, and Permissions
The Linux Security Model
Users
Groups
The root User
Linux File Security
Permission Types
Examing Permissions
Interpreting Permissions
Examining Directories
Linux Process Security
Changing Permissions- Symbolic Method
Changing Permissions- Numeric Method
Changing Permissions- Nautilus
Hands-on Lab: File Permissions

Module 7: vi and vim Editor Basics and Printing
Overview of vi and vim
Starting vi and vim
Three Modes of vi and vim
Cursor Movement
Entering Insert Mode
Leaving Insert Mode:
Change, Delete, and Yank
Put (paste)
Undoing Changes
Searching for Text
Command-Mode Tricks
Saving and Exiting: ex mode
Printing in Linux
Printing Commands
Printing Utilities

Module 8: The Linux Filesystem In-Depth
Partitions and Filesystems
Inodes
Directories
Inodes and Directories
cp and Inodes
mv and Inodes
rm and Inodes
Symbolic (or Soft) Links
Hard Links
The Seven Fundamental Filetypes
Checking Free Space
Removable Media
Mounting CDs and DVDs
Mounting USB Media
Mounting Floppy Disks
Formatting Floppy Disks
Why Archive Files?
Creating an Archive
Inspecting Archives
Extracting an Archive
Why Use File Compression?
Compression Utilities
Using Compression
Compressing Archives
tar to Unformatted Floppies

Module 9: Configuring the bash Shell
Configuring the bash Shell
Variables
Configuring the Shell: Local Variables
Common Local Variables
The PS1 Local Variable
Aliases
Other Shell Configuration Methods
Configuring Commands: Environment Variables
Common Environment Variables
The TERM Environment Variable
The PATH Environment Variable
How the Shell Expands the Command Line
Shell Startup Scripts
Login Shells
Startup Scripts: Order of Execution
/etc/profile
/etc/profile.d
~/.bash_profile and ~/.bashrc
~/.bash_logout

Module 10: Advanced Topics in Users, Groups, and Permissions
User and Group ID Numbers
/etc/passwd, /etc/shadow, and /etc/group Files
System Users and Groups
Changing Your Identity
User Information Commands
Default Permissions
Special Permissions
Special Permissions for Executables
Special Permissions for Directories

Module 11: Advanced Uses of the vi and vim Editors
File Repositioning
Screen Repositioning
Filtering
ex mode: Search and Replace
Visual Mode
Advanced Reading and Saving
Configuring vi and vim
Expanding your Vocabulary
A Peek at the Appendix

Module 12: Introduction to String Processing
head
tail
tail - continued
wc
sort
uniq
cut
Other String Processing Tools
Version Comparison with diff
Spell Checking with aspell
Formatting Tools

Module 13: String Processing with Regular Expressions
Pattern Matching with Regular Expresions
Wildcard Characters
Modifiers
Anchors
regex Combinations
Regular Expressions - Examples
Quote your regex's!
grep
sed
Using sed
less and slocate
Regular Expressions in vi and vim
Extended Regular Expressions
Extended regex Syntax
awk
Using awk

Module 14: Finding and Processing Files
slocate
slocate Examples
find
Basic find Examples
find and Logical Operators
find and Permissions
find and Numeric Criteria
find and Access Times
Executing Commands with find
find Execution Examples
The Gnome Search Tool

Module 15: Investigating and Managing Processes
What is a Process?
How Processes Are Created
Process Ancestry
Process States
Viewng Processes
Sending Signals to Processes
Terminating Processes
Altering Process Scheduling Priority
Altering Process Scheduling Priority- continued
Interactive Process Management Tools
Running a Process in the Foreground
Running a Process in the Background
Suspending a Process
Listing Background and Suspended Jobs
Resuming Suspended Jobs
Compound Commands
Scheduling a Process to Execute Later
Scheduling Periodic Processes
Using cron
Crontab File Format

Module 16: Network Clients
Web Clients
Firefox
Other GUI Web Browsers
Non-GUI Web Browsers
wget
Email and Messaging
Evolution
Configuring Evolution
Evolution and GnuPG
Other GUI Mail Clients
Non-GUI Mail Clients
Gaim
Remote Access and File Transfer
ssh: Secure Shell
scp: Secure Copy
telnet and the "r" Services
rsync
lftp
gFTP
smbclient
File Transfer with Nautilus
Xorg Clients
Network Diagnostic Tools
 
Ranch Hand
Posts: 624
9
BSD Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
IMO it is an advantage if you know Unix commands.
If your application is to be deployed in Unix/linux it gives you power and saves you lot of time.
 
Sheriff
Posts: 5555
326
IntelliJ IDE Python Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I would say that it is a worth while skill to have. All of the Java applications that I have worked on have been hosted on a *NIX server of some kind so it's really useful, almost essential, that I know how to work with the operating system. It is most essential when you have to get involved with application deployments and support as you will be required to move files around, edit configuration files, view logs, check running processes, all from a command terminal with no GUI.

The topics you list cover most of what I'd do fairly regularly, although some of the later topics are Linux Gnome desktop environment features which are handy if your dev machine is Linux with the Gnome window manager, but less useful for actual development tasks.
 
Marshal
Posts: 79153
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You shou‍ld program Java® as if there were no such thing as an operating system, so as to maintain platform independence, but what you showed looks really useful and I would agree with the suggestions that you shou‍ld take tat course.
 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Likes 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
If you cannot work at the command line, you will be very hampered.
 
lowercase baba
Posts: 13089
67
Chrome Java Linux
  • Likes 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Should they need to?  no.

but I don't understand why any developer wouldn't want to learn it. the more you know, the more valuable you are.
 
Ranch Hand
Posts: 91
3
Chrome Java Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Matt Taylor wrote:... Java web developer ... I encountered an app that needs to deploy in a linux environment.



Your question really points to the answer.

What does the majority of the web run on?

What does the majority of "apps" run on?

Do you want to keep your blind spot or eliminate it?

"Need?"  Maybe not.
"Should?"  I would say so.

If the course is time/cost-prohibitive or uncertain, you could always use your resourcefulness at self-teaching, maybe even get a cert.
 
Saloon Keeper
Posts: 27752
196
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
1. Unix/Linux is the predominate platform for Internet services. Only really die-hard Windows shops have no need for *n*x skills.

2. Sun designed Java to be OS-agnostic. But it's agnostic in favor of Unix-like OS's. In no small part because Sun's own Solaris/SunOS on which Java was designed is a Unix operating system.

3. Most of the other popular OS's have stolen features from Unix. The ">/<" piping conventions of the Windows/DOS command line. Regular expressions. The Microsoft TCP/IP stack was bodily lifted from BSD. The current MacOS is a Unix OS running on a Mach kernel.

So, yes. If you know Unix/Linux, you know both practical things about the productions servers that your Java code is probably going to run on, and you'll understand a lot more about why Java itself is the way it is.
 
Rancher
Posts: 4801
50
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
If you've got your own machine you could always either dual boot to a Linux distribution or, more easily, set up a VM on it using something like Virtual Box and play around in it, possibly using your preferred IDE in there for a while.
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic