blob: 3014b043f87ce2248173961ce309352bc0428c52 [file] [log] [blame]
<html>
<head>
<title>Learning Java - One Week of SL-275</title>
<meta name="description" content="learning java by going to a Sun training class">
<meta name="keywords" content="learn,help,teach,professional,
Java,programming,training,course,class,Sun,Microsystems,">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" HREF="https://netbeans.org/netbeans.css">
</head>
<body>
<h1>Learning Java - One Week of SL-275</h1>
<p><br></p>
<blockquote><p><em>Chances are good that you, like many programmers, are self-taught, either
in part or in full. You ask questions on forums, learn from code samples and APIs,
and you feel familiar enough with the features your language of choice has to offer.
</p>
<p>This approach gets you pretty far and is free, so why take a formal programming course at all?
We had our intrepid reporter attend SL-275, a Java training class offered by Sun Microsystems.
Here is her report.</em></p></blockquote>
<p><br></p>
<h2>Project + 3 Months Dev == Project + 1 Week Class + 3 Weeks Dev</h2>
<p><br></p>
<P>A formal programming class gives you the background and theory which is missing in on-the-job training.
As your applications grow more sophisticated, you reach a point where
you can save months in developing time by investing one week in training.
Training provides a framework on which to hang the details of a new technology.
It provides you with clear technical vocabulary and accurate search terms
which enable you to quickly deep-dive into a new API.
Also, the certificate looks great on your resume.
<div style="float:right;color:rgb(150,150,150);padding-left:15px;padding-bottom:8px;
font-weight:bold;padding-right:20px;font-size:120%;">
As your applications grow<br>
more sophisticated, you reach<br>
a point where you can save<br>
months in developing time by<br>
investing one week in training.</div>
<p>Of course, you learn analysing and designing an application best by doing it.
As beginners, autodidacts may miss a piece of the theoretical background
that would make existing knowledge fall into place in the bigger picture.
<p>You may know that you can pass command line switches to your Java application at start-up,
but what API do you search for to create such a switch?
What is the best practice to prevent graphical user interfaces from
growing irresponsive under load?
And what is the difference between an exception and an error anyway?
</p>
<p><br></p>
<h2>What Class Should I Take?</h2>
<p><br></p>
<p>The most important step before deciding on a class is determining your entry-level.
A good advanced class teaches one technology in depth;
a good beginner's class gives you a wide overview of all the language features and technical terms.
<p>
When look for a solid and comprehensive introduction
to platform-independent software development,
<em>SL-275: The Java Programming Language</em> is for you:
This class covers object-oriented programming concepts in general,
and the Java environment and syntax in particular.
</p>
<p>If you have no prior experience with general programming concepts,
consider taking the <em>SL-110: Fundamentals of the Java Programming Language</em>
class first.
<p>SL-275 assumes that you already have fundamental programming experience.
You should be familiar with terms like variable or operator,
and with using a text editor and a web browser. When you have created and
run short programs in another programming language before,
SL-275 will bridge the gap to accomplish the same feat in Java.
</p>
<p><br></p>
<h2>The Course Materials</h2>
<p><br></p>
<p>The course consists in equal parts of practical and theoretical sections.
And of course it includes comprehensive learning materials:
Every student receives an annotated copy of the lecture script,
a NetBeans IDE reference guide, sample code, and a student workbook.
</p>
<p>The workbook presents the student with actual tasks to put
the theoretical session into action.
Each task comes in three levels:
<p>The first level outlines steps to accomplish the task,
leaving the implementation as an exercise to the student.
To check whether your solution is on the right track,
turn the page and read level 2. If you should get stuck,
turn to level 3 which will guide you through each step to the best solution.
This allows you to repeat the exercises even at home without the teacher.
</p>
<p><br></p>
<div class="align-center"><p>
<a href="../../../images_www/articles/java-training/java-training-1.png"><img
src="../../../images_www/articles/java-training/java-training-1-small.png" ></a><br><em>Learn how to store
user data: Save it to and restore it from a data file.</em>
</p></div>
<p><br></p>
<h2>Learn Java -- and NetBeans As Well</h2>
<p><br></p>
<p>During the exercises, the teacher introduces NetBeans editor features
when the situation asks for it.
It is good to know that the IDE takes care of repetitive tasks for you.
</p>
<p>
Notice how often you type <code>System.out.println("");</code> or for-loop code?
Then remember to use abbreviations for common code snippets in the IDE:
For instance, NetBeans auto-completes the abbreviation <code>sout_</code>
(four letters followed by a blank) to a println statement.
The abbreviation <code>fori_</code> (also followed by a blank) expands to a for-loop block.
</p>
<div style="float:right;color:rgb(150,150,150);padding-left:15px;padding-bottom:8px;
font-weight:bold;padding-right:20px;font-size:120%;">
The goal is not to learn it all <br>
by heart, but rather to know<br>
what is available and how to <br>
find it when you need it.
</div>
<p>After five days, you will know what is needed about objects, flow control and data structures.
You will have implemented sample applications with graphical and textual user interfaces.
And you will even have employed event handling, threading, networking, exception handling,
and input/output streams.
<p>Don't worry if such a comprehensive overview of Java Platform features seems overwhelming.
The goal is not to learn it all by heart, but rather to know what is available
and how to find it when you need it.
</p>
<p>Now that you know that a Java application's command line switches are accessible through the
System Properties API, you know what to search for when you need them.
The next time your graphical user interface bogs down and stalls,
you keep it responsive by creating threads for each subtask.
You may not be able to prevent <em>errors</em> (like the user running out of memory),
but now you create solid applications by catching common <em>exceptions</em> (like the user mistyping a file path).
<p>Again the IDE assists you: It displays possible methods, constants, and variables
in its code completion window, and surrounds tricky statements with
exception handling code skeletons.
</p>
<p><br></p>
<div class="align-center"><p>
<a href="../../../images_www/articles/java-training/java-training-2.png"><img
src="../../../images_www/articles/java-training/java-training-2-small.png" ></a><br><em>Learn how to
implement client/server communication over the network.</em>
</p></div>
<p><br></p>
<h2>Verdict</h2>
<p><br></p>
<p>I really liked how clearly structured the course was.
After I came home I was able to set up my first larger Java project in one go.
Even if I did not get everything perfect right away, this time
I at least knew what solution to look for.
<p>The only thing I was disappointed about was
that the course only briefly touched GUIs (graphical user interfaces) in its AWT chapter.
I would have liked to learn more about Swing and the NetBeans GUI builder.
But Swing is a vast topic that is certainly worth spending an extra day in a
<a href='http://www.sun.com/training/catalog/courses/WJO-1107.xml'>web-based training</a> on.</p>
<p>Apart from that, SL-275 gave me the much-needed bird's eye view of the Java API,
and it supplied me with solid background information to allow me
to proceed developing Java SE tools and applications in a more efficient way.
</p>
<p><b>Update 2007-02-20:</b> SL-275 is currently being updated and the new version will replace AWT topics with Swing!
</body>
</html>