I am a Java Virgin! I need your support.

G

google 24/7

I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn. It's such a disruption to
the way my imaginative visual brain thinks and has developed for years
that I've contemplated dropping the class I'm taking in beginning Java.
Why am I learning Java you ask? For fun. Puzzled? So am I.
Actually thanks to Google and Mozilla Firefox (especially Google who I
admire with every lingering breath) I've been inspired to learn because
of their belief in open-source a philosophy and practice I highly agree
with. But I need all your support because it is all difficult to
process. The other reason I decided Java over other languages is I
naively thought OOPs Object Oriented was dealing with visual objects
like chess pieces you just drag around and plug in to some master
program(oh my God that's sounds really stupid but its the truth). I've
entertained the idea of dropping the class I'm taking because it's
getting harder with these what do you call it now these method
perameters and arguments and oh what else the whole confusion of
implimenting all these classes and methods and tracking back from the
main method to find out where these original objects were assigned and
and class methods embedded within class methods and I just get
lost...but I picked up another book last night to compliment the one we
are using for the class because that one is so dry. This one I got
last night called Diving Headfirst into Java by O'Reilly makes it a
little fun with analogies pics and stuff. Okay I'm rambling. I hope I
have the guts to stick with it all but only with your support. Baby
steps and all, right? Any suggestions and what you all did when you
started and how you've overcome these hurdles with all the years or
months would be appreciated. Anybody in a similar situation as me
please post too. Maybe we can figure it out together. One thing I am
also doing is going to the computer section and looking through
different books getting different POVs but also just exposing myself
even though I don't understand most of what I'm looking at.
 
M

Michael Redlich

google said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me.

google 24/7:

Since you never had any experience programming, you definitely need to
understand the basics of computer programming regardless of which
language you choose.

For example, it is imperitive that you understand concepts such as
for-loop, while-loops, passing parameters into functions and methods,
conditionals (if/then/else), etc. You also need to understand how to
avoid pitfalls such as inadvertantly creating an infinite running loop
or dereferecing pointers that point to nothing.

The Head First Java book that you have is excellent. However, you
should take some basic programming classes as well.

Good luck with your studies...

Mike.
 
R

Rhino

google 24/7 said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn. It's such a disruption to
the way my imaginative visual brain thinks and has developed for years
that I've contemplated dropping the class I'm taking in beginning Java.
Why am I learning Java you ask? For fun. Puzzled? So am I.
Actually thanks to Google and Mozilla Firefox (especially Google who I
admire with every lingering breath) I've been inspired to learn because
of their belief in open-source a philosophy and practice I highly agree
with. But I need all your support because it is all difficult to
process. The other reason I decided Java over other languages is I
naively thought OOPs Object Oriented was dealing with visual objects
like chess pieces you just drag around and plug in to some master
program(oh my God that's sounds really stupid but its the truth). I've
entertained the idea of dropping the class I'm taking because it's
getting harder with these what do you call it now these method
perameters and arguments and oh what else the whole confusion of
implimenting all these classes and methods and tracking back from the
main method to find out where these original objects were assigned and
and class methods embedded within class methods and I just get
lost...but I picked up another book last night to compliment the one we
are using for the class because that one is so dry. This one I got
last night called Diving Headfirst into Java by O'Reilly makes it a
little fun with analogies pics and stuff. Okay I'm rambling. I hope I
have the guts to stick with it all but only with your support. Baby
steps and all, right? Any suggestions and what you all did when you
started and how you've overcome these hurdles with all the years or
months would be appreciated. Anybody in a similar situation as me
please post too. Maybe we can figure it out together. One thing I am
also doing is going to the computer section and looking through
different books getting different POVs but also just exposing myself
even though I don't understand most of what I'm looking at.
One book that I've seen recommended very highly is "Thinking in Java" by
Bruce Eckels. You can buy it in bookstores but you can also download it (and
all of the examples) online, for free. Perhaps working through that book
will help you make the mental adjustment you need to work in Java? You can
find the book here, at the author's website:
http://www.mindview.net/Books/TIJ/. If you scroll down a bit, you'll find a
link for a download site; follow that and you can download the book from one
of the many mirrors. I believe the Third Edition is the current one so
that's probably the one you want.

Attitude is another important element in succeeding with Java. Everyone
learns Java for their own reasons and we're all different so you might only
have met people who have picked up Java because it looks good on a resume or
whatever. In my own case, I think programming has a distinct artistic
component and really satisfied my creative impulsives.

I used to be quite active in music, playing a couple of instruments passably
and dabbling at song-writing. But I find I rarely pick up an instrument any
more because Java scratches my creative itch. I'm also a novice woodworker
and I realized a couple of years ago that, for me, doing woodworking, which
is fairly creative in itself, is very similar to writing programs. Just as a
woodworker starts with a lump of unshaped wood and gradually shapes it into
something that has form and function, a programmer starts with a blank
screen and writes code until he comes up with something that has form and
function. When he's working on his own projects, rather than school or work
assignments, he's free to make that program do whatever he wants it to do.
He can use any technique he can imagine to gather input and to deliver or
record information. That's fairly artistic in my opinion.

Also, it might help you to get some idea of some of the artistic things you
can do with GUIs to make them look a little less ordinary. Perhaps that's
your niche in the Java world: to bring a sense of art to Java. One article
that might help you get a sense of the creative side of Java is this one:
http://java.sun.com/products/jfc/tsc/articles/swing2d/index.html. I'm sure
other articles demonstrating the visual side of Java abound on the Internet
so you can probably use your friend Google to find more. You could also post
here and ask people to point you to really neat GUIs done in Java.
 
O

Oliver Wong

google 24/7 said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn. It's such a disruption to
the way my imaginative visual brain thinks and has developed for years
that I've contemplated dropping the class I'm taking in beginning Java.
Why am I learning Java you ask? For fun. Puzzled? So am I.
Actually thanks to Google and Mozilla Firefox (especially Google who I
admire with every lingering breath) I've been inspired to learn because
of their belief in open-source a philosophy and practice I highly agree
with. But I need all your support because it is all difficult to
process. The other reason I decided Java over other languages is I
naively thought OOPs Object Oriented was dealing with visual objects
like chess pieces you just drag around and plug in to some master
program(oh my God that's sounds really stupid but its the truth).

You might have more fun dropping (or putting aside temporarily) Java,
and working with game-creation tools. Games are, in my opinion, where
creative arts and programming intertwine the most.

Many game creation tools are very visual, and they will gently guide you
into thinking like a programmer when you implement the rules for the game.
You'll learn about conditional statements, variables, and all that stuff
along the way. Then, when you're ready, you can come back to Java with a new
perspective of things.

My brother doesn't know much about computers beyond reading e-mail,
playing mp3s and watching movies, but he had fun creating games using
RPGMaker2000. I only had to explain to him what all the instructions do;
from there, he picked it up pretty quickly and was able to make some simple
games.

You might want to Google for RPGMaker2000 or other game creation tools
and see if it suits your needs.

- Oliver
 
L

Luke Webber

google said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn.
[snip]

Well thanks very much. /We/ happen to think that programming /is/ a
creative activity. <g>

Luke
 
P

petermichaux

Head First Java by Kathy Sierra, Bert Bates

I'm reading this and find it very good. A lot of pictures for those who
are visual. (I do have studied some other languages and OOP a little
before.)

Peter
 
V

VisionSet

Luke Webber said:
google said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn.
[snip]

Well thanks very much. /We/ happen to think that programming /is/ a
creative activity. <g>

Absolutely!
I moved in to programming to better satisfy my creative side!!
 
R

Roedy Green

I moved in to programming to better satisfy my creative side!!

the thing I love about programming is the level of perfection you can
attain. And when you are all done, the work show no seams where you
tool 300 tries to get it just the way you wanted. All clumsiness is
forgiven with sufficient persistence. In most other endeavours, such
as playing a musical instrument, you have to practice and practice
then perform perfectly in one attempt.
..
 
P

Patricia Shanahan

google said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn.

How can anything be more creative than weaving the behavior you want out
of pure information?

Books are good, but depending too much on them would be like learning to
play a musical instrument by reading about it. There are some things
that can only really be learned by doing, and programming is one of
them. Practice, practice, practice.

Patricia
 
T

trippy

google 24/7 took the hamburger, threw it on the grill, and I said "Oh
wow"...
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn. It's such a disruption to
the way my imaginative visual brain thinks and has developed for years
that I've contemplated dropping the class I'm taking in beginning Java.
Why am I learning Java you ask? For fun. Puzzled? So am I.
Actually thanks to Google and Mozilla Firefox (especially Google who I
admire with every lingering breath) I've been inspired to learn because
of their belief in open-source a philosophy and practice I highly agree
with. But I need all your support because it is all difficult to
process. The other reason I decided Java over other languages is I
naively thought OOPs Object Oriented was dealing with visual objects
like chess pieces you just drag around and plug in to some master
program(oh my God that's sounds really stupid but its the truth). I've
entertained the idea of dropping the class I'm taking because it's
getting harder with these what do you call it now these method
perameters and arguments and oh what else the whole confusion of
implimenting all these classes and methods and tracking back from the
main method to find out where these original objects were assigned and
and class methods embedded within class methods and I just get
lost...but I picked up another book last night to compliment the one we
are using for the class because that one is so dry. This one I got
last night called Diving Headfirst into Java by O'Reilly makes it a
little fun with analogies pics and stuff. Okay I'm rambling. I hope I
have the guts to stick with it all but only with your support. Baby
steps and all, right? Any suggestions and what you all did when you
started and how you've overcome these hurdles with all the years or
months would be appreciated. Anybody in a similar situation as me
please post too. Maybe we can figure it out together. One thing I am
also doing is going to the computer section and looking through
different books getting different POVs but also just exposing myself
even though I don't understand most of what I'm looking at.

First, breathe.

Secondly, it's not some mystical, magical thing. There's rules to it,
like there is in everything else. Everything's an object in java.
Everything stems from java.lang.object. An object is an instance of a
class. Objects are instantiated using the class as a template. So
whatever attributes (things you want that object to have or be aware of)
and methods (thing you want the object to do) you tell the template it's
going to have is what you're going to use with your objects.

To make an object you use new. SomeClass anObject = new SomeClass();

To get an object to do the things you want to do, you call its methods.

anObject.doSomething();

Sometimes a you can tell a class to execute something using the same
process. Those are static methods. You call methods for a class the same
way you do for an object.

SomeClass.doTheStaticSomething();

Parameters are when the method needs something to do its thing. That's
what goes in the parenthesis. You have to make sure the thing you're
using for a method call is the same type the parameter in the method
requires.

String thisThing = "This String is actually an object too."

anObject.doSomething(thisThing);

Now somewhere in your class, You're gonna have a method named
doSomething which requires a parameter of a string.

public class SomeClass {

public void doSomething(String aParam) {

System.out.println(aParam);


}

}

You can use method calls within method calls too, provided you end up
with the type(s) for the argument(s) you need.

anObject.doSomething(someObject.methodCall());

You can also chain your method calls together.

anObject.doSomething().thenDoThis();

A class can call a method within itself without having to instantiate an
object.

someMethod();

Constructors are the method that actually instantiates the object. Only
difference between that and the other methods is that constructors don't
have a return type and have to be named the same as the class.

public SomeClass() {

}

They can have parameters of pretty much any type, AFAIK, same as regular
methods. You can have objects, arrays, arrayLists, whatever, as long as
whenever you call the method, you give it that type, it's all good.

Overloading is when a method has the same name but different signatures.
A method's signature is its name and the number and the type of its
arguments.
(Sun, http://java.sun.com/docs/books/tutorial/java/javaOO/override.html)

public void aMethod() {

}

public void aMethod(int aNumber) {

}

public void aMethod(string aString, int aNumber) {


}

how you call it determines which of the methods you use

anObject.aMethod();
anObject.aMethod("My String", 4);
anObject.aMethod(7);


Overriding is when you use the same method to do different things in
another class.

public class ThisClass {

public void aMethod() {

system.out.println("This Class");

}

}

public class ThatClass extends ThisClass {

public void aMethod() {

String aString = "That Class is doing the work.";
System.out.println(aString);

}

}

Each class is different and your objects and their attributes and
methods don't carry over. A different class would have to instantiate
them/use them/whatever for them to mean anything to it.

Static methods you can pretty much call whenever you need them.

System.out.println("Hi"); would be an example of a static method call.

Your class name is the same as your file name.

public class SomeClass translates to SomeClass.java.

In addition to what Michael said about things like learning for loops
and if else and other fundamentals, start trying to read the API.
There's a lot of classes in java that can save you some headache. The
top left pane is the different packages that are in your version of sdk,
the lower left pane is either the classes in the package or every class,
if you clicked the all classes link in the top left pane. The right pane
is the description of the package or class. It's kind of a tough slog.
Not much you can do about that, just gotta slog it. It'll be worth it.
If you don't feel like you get it at first, that's okay. It takes time
to understand it. Learning how to read the API has helped a lot. In
java, if you're so inclined, you can actually make your own API's and
people have. They generally do that for the classes and packages they
write themselves.

http://java.sun.com/j2se/1.5.0/docs/api/index.html

Google and Wikipedia (in addition to comp.lang.java.help) are a great
help too.

There are also various websites that are dedicated to java (Roedy's
mindspring site for instance) that can help as well. This in addition to
the books that various posters have recommended.

Sorry, didn't mean to write a book about it but I've been there and it
blew.

--
trippy
mhm31x9 Smeeter#29 WSD#30
sTaRShInE_mOOnBeAm aT HoTmAil dOt CoM

NP: "I Am The Law" -- Anthrax

"Now, technology's getting better all the time and that's fine,
but most of the time all you need is a stick of gum, a pocketknife,
and a smile."

-- Robert Redford "Spy Game"
 
C

Chris Uppal

google said:
Why am I learning Java you ask? For fun. Puzzled? So am I.

One thing that might not be obvious to you yet is that what you are doing now
is the equivalent of learning to play scales. Or some other equally boring and
frustrating activity that you have to get through /before/ you can do anything
real. You are learning (reluctantly, and with some difficulty, from the sound
of it ;-) what the basic tools are and how to use them. You aren't actually
/programming/ yet, just doing finger exercises.

The fun stuff starts when you have learned the tools, and can use them without
thinking too much about them. That's to say /if/ you enjoy programming at all,
then that's when the fun stuff starts. Some do, some don't -- and you never
know until you try.

A couple of other small points:

One of the first signs of being an incipient programmer is that you can loose
yourself in writing code (six hours later: "It must be almost lunchtime. [looks
at watch] Wow! Where did the afternoon go ?"). Another is the buzz you get
from making something work, or successfully solving a problem that has been
giving you grief.

Another point is that Java is rather a dry programming language. It is
designed for professionals (and not the most talented pros at that) to do
mostly dull things. Think of a set of tools intended for a house painter
rather than a portrait painter. That's not to say that you can't do fun things
with Java (either fun to create, or fun to use once they have been written),
but there are a fair number of features in the language which you just have to
learn even though they don't directly contribute to (may even hamper) the
underlying creativity of programming. What I'm trying to warn you of is that
learning a language like Java involves rather a lot of frustrating detail --
the important point is to realise that it is /only/ detail, and not to let it
put you off the whole enterprise.

-- chris
 
D

David Segall

google 24/7 said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn. It's such a disruption to
the way my imaginative visual brain thinks and has developed for years
that I've contemplated dropping the class I'm taking in beginning Java.
Why am I learning Java you ask? For fun.
I don't think learning Java is the way you should go. Even using a
programming tool like NetBeans <http://www.netbeans.org> that
mechanises some of the worst tasks, you are still facing many boring,
unrewarding months before you can produce something satisfying.

Microsoft have produced a range of, currently free, products aimed at
you. Check out
<http://msdn.microsoft.com/vstudio/express/default.aspx>. Select
Visual Basic for the easiest to understand and J# if you want to move
to Java later. If you want to develop web based applications select
Visual Web Developer but, in that case, Java Studio Creator
<http://developers.sun.com/prodtech/javatools/jscreator/> is probably
a better choice and is the same price.

An alternative way of learning what programming is about but which
will produce some early rewards is to learn a scripting language.
Javascript (which has almost nothing to do with Java) has most of the
elements of a programming language, is widely used and is relatively
easy to learn. It has the added advantage that you can combine your
imaginative brain with your new found programming knowledge to produce
a dazzling web page and creative, open source, Javascript code is in
great demand.
 
C

Chris Smith

David Segall said:
I don't think learning Java is the way you should go. Even using a
programming tool like NetBeans <http://www.netbeans.org> that
mechanises some of the worst tasks, you are still facing many boring,
unrewarding months before you can produce something satisfying.

Huh? Plenty of people learn Java and produce interesting applications
in less that many months... not to mention that the OP said he enjoyed
the prospect of learning a programming language. David, maybe you just
don't like programming?
Microsoft have produced a range of, currently free, products aimed at
you. Check out
<http://msdn.microsoft.com/vstudio/express/default.aspx>. Select
Visual Basic for the easiest to understand and J# if you want to move
to Java later.

This is getting a bit silly. In any case, certainly don't choose J#.
It's a hideous mix of worlds that is difficult to understand unless you
come with at least an intermediate knowledge of at least one of them in
advance. Java, C#, VB.NET, and C++ all have things to recommend them,
but I have no earthly idea why anyone would choose to work in J#.
An alternative way of learning what programming is about but which
will produce some early rewards is to learn a scripting language.

This may be true, but it depends on what the OP is looking for. Without
that information, the OP would be well advised to ignore anyone giving
advice that it's necessary to switch languages to be learned.

--
www.designacourse.com
The Easiest Way To Train Anyone... Anywhere.

Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
 
M

Martin Gregorie

google said:
I am a Java virgin. I have never taken any computer classes or
programmed in my life, so this is all new to me. My background is more
creative so this is like 180 degree turn. It's such a disruption to
the way my imaginative visual brain thinks and has developed for years
that I've contemplated dropping the class I'm taking in beginning Java.
Why am I learning Java you ask? For fun. Puzzled? So am I.
You may not find taking classes the best way to learn: I have many years
of writing assembler and C. I generally think I can learn a new
programming language (e.g. Algol 68, Pascal) in 1-2 weeks) but my first
exposure to Java was a Sun 1 week course and that did remarkably little
for me.

What did the trick for me was to get the Wrox book, "Beginning Java" by
Ivor Horton and work from that. There's nothing more to pay once you've
got it: everything in it can be done using stuff that's already on your
computer or free downloads. All you need to work through the book is a
Java development kit and a decent text editor.

Download the Java J2EE SDK (software development kit) and the matching
J2EE documentation set from the sun website and install them.

If you're a Windows user you can use Wordpad for your text editor (if
you must), but PFE, the Programmers File Editor, (free download from
Simtel) is hugely better for programming tasks. For starters it can
automatically indent your program as you write it.

The documentation set is key. Its an enormous set of linked web pages
that documents the hundreds of standard classes that come as part of the
SDK. Install it and learn your way around it: use it while working
through the book because it will really be your friend in future.

Java is like C - both are small languages that can do virtually nothing
without the contents of the Standard Library. In both cases learning
your way round the library is vital and a bigger task than learning the
language itself.

Once you have the basics then you can start using the fancy development
desktops like Eclipse or JBuilder. They are not needed at first and are
yet another thing to learn.

Oh yeah, have fun!
 
C

Colin Hemmings

Hi There,
I'm nowhere near the level of programmer that some of the people
are on here because I am still in education but I do feel I have some
advice to offer. I have been programming on some level for many years
(since school) but I have only just moved into the world of OOP. I
started off in procedural language (Pascal) when I was at school. This I
feel taught me the fundamentals of programming and in may opinion is a
well structured and easier to understand language for the beginner. When
I went onto OOP at uni I found it a big transition. Not necessarily in
terms of the actual code but in the way object work, interact and are
referenced.
So to summarize (sorry, summarise), if I had to teach someone to program
I would start them off in a language like Pascal and move on from there.
This because it was quite straight forward to pick up and understand
(and understanding is the important part). Also, this gives you
confidence to carry on, because if something is difficult to pick up
then it can be hard to stay motivated. But once you get started its a
fun, creative and challenging hobbies/job to do and is really rewarding
when a program starts to come together and work

Hope this has helped, or at least made some kind of sense
 
D

Daniel Dyer

So to summarize (sorry, summarise), if I had to teach someone to program
I would start them off in a language like Pascal and move on from there.
This because it was quite straight forward to pick up and understand
(and understanding is the important part). Also, this gives you
confidence to carry on, because if something is difficult to pick up
then it can be hard to stay motivated. But once you get started its a
fun, creative and challenging hobbies/job to do and is really rewarding
when a program starts to come together and work

I also went from Pascal (and BASIC before that) to Java. While Pascal may
be easier to pick-up, the problem with going from procedural to OO is that
you have to unlearn a lot of things because it is a different way of
thinking. The key to feeling comfortable in Java is having a good grasp
of objects. If you come from a procedural background you have
preconceptions about how to program that could be a hinderance in the OO
world. Ways of writing good code in Pascal are bad habits in Java.

Perhaps the original poster should try using BlueJ since it is designed
specifically for teaching OO concepts in Java to beginners.

Dan.
 
M

Michael Redlich

Daniel said:
I also went from Pascal (and BASIC before that) to Java. While Pascal may
be easier to pick-up, the problem with going from procedural to OO is that
you have to unlearn a lot of things because it is a different way of
thinking. The key to feeling comfortable in Java is having a good grasp
of objects. If you come from a procedural background you have
preconceptions about how to program that could be a hinderance in the OO
world. Ways of writing good code in Pascal are bad habits in Java.

Dan:

I, too, learned procedural programming before OOP. I remember learning
FORTRAN IV on an IBM mainframe with keypunch cards. From there it was
BASIC, Pascal, C, then finally C++ and Java.

I understand and agree with what you said about switching from
procedural to OOP. However, I also think that it made me appreciate
OOP more.

A few years ago, Bjarne Stroustrup was interviewed about which language
would be better for a new programmer to learn - C or C++. I was a bit
surprised that he recommended C++. I suppose that I was thinking about
the learning curve for the STL, but then again, who says that a new
programmer would necessarily have to use the STL right away?

Since the OP was very new to any kind of programming, I recommended
that he learn the basics of any programming language: loops,
conditionals, etc., and learn how to avoid potential pitfalls such as
inadvertantly writing infinite loops. I think that's more important
regardless of which programming language he chooses.

Sincerely,

Mike.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,767
Messages
2,569,571
Members
45,045
Latest member
DRCM

Latest Threads

Top