[ILUG] Java on Linux
Josh Glover
jmglov at gmail.com
Sun Mar 8 07:22:42 GMT 2009
2009/3/6 Conor Mac Aoidh <conormacaoidh at gmail.com>:
> What I wanted to ask is does anyone here know of any books that would
> concentrate on learning Java using Linux? I'm sure once I get to grips with
> the basics that I will be able to show the Windows users how much easier it
> is to program with Java on Linux!
As others have rightly pointed out, Java is Java, regardless of the OS
on which it is running. And most of the Java tools are written in
Java, meaning that they will run on any platform Java itself does.
Here's my advice, which is similar to advice that others have given you:
1. Get yourself a Linux machine to do *all* of your work on. Get rid
of Windows entirely if you have not already. I'm sure UCD has a
Windows machine somewhere that you can use if you ever *have* to, but
now is the perfect time to force yourself to learn how to do
everything on Linux that you were in Windows.
2. Install Eclipse on said machine. For my money, there is no better
Java development environment than Eclipse, and this is coming from a
long-time XEmacs user who hates IDEs as a rule. Eclipse is the
exception, at least for Java development. The automatic code
generation and refactoring tools mean a lot of the boilerplate code
that Java (and to some extent, good Object Oriented design) forces you
to write gets written for you, removing a potential source of errors
and a lot of tedium.
3. Beg, borrow, or steal (or just buy) the following books:
a. "The Java Programming Language", Arnold, Gosling, Holmes;
(http://www.amazon.co.uk/dp/0321349806) - This is *the* book on Java.
Short, precise explanations of every feature of the language, written
by the actual designers of the Java language.
b. "Test-Driven Development", Beck;
(http://www.amazon.co.uk/dp/0321146530) - This is an excellent little
book (240 pages, of which you only *really* need to read 120 or so)
that will teach you how to write effective unit tests, and to write
them *before* you write the section of code that they are testing.
Crazy, right? Since you're just starting out with Java, you have a
great opportunity to establish some good habits that more experienced
programmers have to work hard for many months to overcome (speaking
from personal experience with TDD).
c. "Refactoring: Improving the Design of Existing Code", Fowler;
(http://www.amazon.co.uk/dp/0201485672) - this book will teach you how
to improve your existing code, and plays nicely into the Test-Driven
Development practice. As you organically grow your code with TDD, you
need to constantly refactor. Refactoring and TDD combined give you the
confidence to take huge design risks, knowing that you can just
refactor them away if they go awry.
d. "Design patterns : elements of reusable object-oriented software",
Gamma, Helm, Johnson, Vlissides;
(http://www.amazon.co.uk/dp/0201633612) - sometimes called the Gang of
Four (or GoF) book, this book will teach you patterns that can be
applied to many different problems throughout your programming career,
regardless of language or problem domain.
e. "The Pragmatic Programmer", Hunt, Thomas;
(http://www.amazon.co.uk/dp/020161622X) - this book gives you a lot of
general tips and some specific ones as well on Getting Things Done,
and Doing The Right Thing. In combination these two traits equal
Pragmatism.
4. http://java.sun.com/new2java/ has a lot of great resources on
getting started with Java, including The Java Tutorials
(http://java.sun.com/docs/books/tutorial/index.html), which will give
you example-driven lessons that put most "Learn Java in 21
Minutes"-type books to shame.
5. If you wanna, consider a student membership to the IEEE:
http://www.ieee.org/portal/site/mainsite/menuitem.818c0c39e85ef176fb2275875bac26c8/index.jsp?&pName=corp_level1&path=membership&file=styp.xml&xsl=generic.xsl
The advice I have given is not the fastest way to learn Java, but it
is a good way to become a software engineer who knows Java inside and
out. I leave it to you to judge which path is more valuable in the end
(hint: Yoda was a software engineer, but Darth Vader was just a
coder). ;)
--
Cheers,
Josh
More information about the ILUG
mailing list