To be a Java Programmer

M

Marty U.

I am looking for insight into becoming a Java Programmer. I am currently
studying C# but I would love to learn Java. However, for a non Java
person researching Java is an absolute nightmare. I mean things like
j2ee, swing, awt, this framework..that framework. I am currently a web
developer and would probably benefit most from JSP, Applets, and any
other web centric stuff.

Can someone provide me resource or give some insight as to this very
huge world of Java. What would be best for a web guy to learn, what are
the most commonly used Java technologies?

Any pointers are much appreciated. My goal is within the next year
become fluent in C# and gain a much needed knowledge in Java. In a year
I might even give up C# and .Net for Java depending on my experience.

I can say that java development seems to be much cheaper than .Net for
the developer. The tools, servers, and information is much more readily
available without cash flow.

Thanks
Marty U.
 
R

Ryan Stewart

Marty U. said:
I am looking for insight into becoming a Java Programmer. I am currently
studying C# but I would love to learn Java. However, for a non Java
person researching Java is an absolute nightmare. I mean things like
j2ee, swing, awt, this framework..that framework. I am currently a web
developer and would probably benefit most from JSP, Applets, and any
other web centric stuff.

Can someone provide me resource or give some insight as to this very
huge world of Java. What would be best for a web guy to learn, what are
the most commonly used Java technologies?

Any pointers are much appreciated. My goal is within the next year
become fluent in C# and gain a much needed knowledge in Java. In a year
I might even give up C# and .Net for Java depending on my experience.

I can say that java development seems to be much cheaper than .Net for
the developer. The tools, servers, and information is much more readily
available without cash flow.
Start off at http://java.sun.com/docs/books/tutorial/ and ignore applet and
GUI stuff if you're interested strictly in server-side programming. Learn
the basics of the language, and by the time you're comfortable with that,
you should have enough knowledge to start yourself out on the JSP path. That
path will take you to J2EE, servlets, application frameworks, and more.
These groups will be a great resource as well. In the future, beginner posts
should go to comp.lang.java.help. This group is for more advanced issues.
 
M

Marty U.

Stefan said:
Good reading Stefan and very truthful. I do have real world experience
in programming, but mainly web.

One of the things I find real confusion about Java is apparent in a
early post in a NG. A gentlemen ask about the difference between Java
and J2EE. Now maybe this person is very new but since I haven't studied
Java I would ask is there a difference. And things like Swing and AWT I
know they are related to GUI but which one is most often used, which is
more career worthy.

These type things are the information that is utmost confusing. If I
were to begin studying and "practicing" Java tomorrow what technologies
would benefit me most in the job market?

Since I am a career web developer at this time, I am trying to make a
lifelong decision. I would like to begin focusing on a single
programming technology such as Java. Become an expert in the field, and
learn many of the Java technologies along the way. This way in 10 years
retirement won't be so far fetched. I don't want to be a "Jack of all
trades, and a master of none". I would love to say I am a Java
Programmer, period. That is unless I determine C# may be better but I
just purchased a couple C# books that I will use mainly for work and
learn better Object Oriented programming practices.

I really find Java amazing due to it's diversity of platforms and
technologies. If I currently had a job that would allow me to use Java I
would probably start studying it. However, they currently only have the
JRun server with ColdFusion MX running which has proved to be very
unstable. They said they would be implementing IBM's java server before
too long. That should give me enough time to make my determination of
the path for the next 10 years. ;-)

Thanks
Marty U.
 
R

Roedy Green

Can someone provide me resource or give some insight as to this very
huge world of Java. What would be best for a web guy to learn, what are
the most commonly used Java technologies?

It is overwhelming. There is no way you can even know what all the
acronyms mean, much less familiarity with all the code. You have to
pick something and specialize in it.


For all of these you need core java. See
http://mindprod.com/jgloss/gettingstarted.html

If you are curious about some acronym such as J2EE, JSP etc just look
it up in the Java glossary for a quick overview of what it is and
links to where you can learn more.

see http://mindprod.com/jgloss/jglossh.html
 
P

Phillip Mills

"Marty U." <[email protected]> said:
However, for a non Java
person researching Java is an absolute nightmare. I mean things like
j2ee, swing, awt, this framework..that framework.

Oh, it's pretty much just alphabet soup for Java people too. :)

My suggestion would be to start with a project that you'd actually like
to do and put together an architecture/technology plan for it, rather
than learning a specific part of the API just because it's good to know.

Don't try to swallow it all at once...J2EE could choke a hippo.

(I was going to say, "Well, of course you need the core APIs," but even
there, many people have written a lot of code without using packages
like beans, net, security.... So, they too can be added when you
actually discover a reason.)
 
R

Roedy Green

These type things are the information that is utmost confusing. If I
were to begin studying and "practicing" Java tomorrow what technologies
would benefit me most in the job market?

That sort of question is best answered by studying the job ads.

I'd say right now the action is mostly server side. You can get
started with SQL, then Servlets, then JSP, then enterprise Java
beans(EJB).

see http://mindprod.com/jgloss/sql.html
http://mindprod.com/jgloss/servlet.html
http://mindprod.com/jgloss/jsp.html
http://mindprod.com/jgloss/ejb.html

The people making big money are those who know how to do Unix
administration. Boring but lucrative. You could get started learning
to manage a small Linux server.

All this needs a good underpinning of vanilla Java. Doing Applets
invites the public to critique your work and gets you some exposure
which could lead to work that lets you expand your horizons.

See http://mindprod.com/jgloss/projects/projects.html
for ideas for projects to teach yourself Java and beyond.

I don't think the server side will look recognisable 5 years from now.
At some point customers will move in droves away from HTML forms to
hybrid client/server computing with the client providing the UI and
the server providing clean binary data. What we are doing now is a
stop gap measure caused mainly by MS's success at foiling Java on the
desk top. From the point of view of data entry validation, it is more
primitive than the punch card.
 
K

Kevin McMurtrie

Marty U. said:
Good reading Stefan and very truthful. I do have real world experience
in programming, but mainly web.

One of the things I find real confusion about Java is apparent in a
early post in a NG. A gentlemen ask about the difference between Java
and J2EE. Now maybe this person is very new but since I haven't studied
Java I would ask is there a difference. And things like Swing and AWT I
know they are related to GUI but which one is most often used, which is
more career worthy.

These type things are the information that is utmost confusing. If I
were to begin studying and "practicing" Java tomorrow what technologies
would benefit me most in the job market?

Since I am a career web developer at this time, I am trying to make a
lifelong decision. I would like to begin focusing on a single
programming technology such as Java. Become an expert in the field, and
learn many of the Java technologies along the way. This way in 10 years
retirement won't be so far fetched. I don't want to be a "Jack of all
trades, and a master of none". I would love to say I am a Java
Programmer, period. That is unless I determine C# may be better but I
just purchased a couple C# books that I will use mainly for work and
learn better Object Oriented programming practices.

I really find Java amazing due to it's diversity of platforms and
technologies. If I currently had a job that would allow me to use Java I
would probably start studying it. However, they currently only have the
JRun server with ColdFusion MX running which has proved to be very
unstable. They said they would be implementing IBM's java server before
too long. That should give me enough time to make my determination of
the path for the next 10 years. ;-)

Thanks
Marty U.

Convince them to switch to Resin. It's professional grade but costs
very little money. I haven't used JRun in a few years but it was a
hideous nightmare. Tomcat is pretty good too - and even free.

Get their Java system working properly and that will be a chance for you
to work on Java software development. Stick with J2SE. J2EE has high
coding and support overheads so you don't want to use it unless you
really need its features.
 
J

Job Numbers

One thing you have to realize is that being a java programmer on the
server-side of things (which means web stuff included) is that you actually
need to be good at programming, good at learning, know a little about
designing software and generally good at learning from your mistakes and
being responsible for how you do things when you realize things are getting
to complex.

I'd recommend learning servlets first, because you can't really
learn/understand jsp without that. I'd also recommend just learning java
the language itself (like collections, reflection and the main apis that
you'd use all the time).

I'd stay away from enterprise java beans - it's all so clumpy and bloated
and if you aren't even that experienced in enterprise services from other
technologies or platforms, you won't like/get the hang of this either.

In the end, you should know the following:
- java the language
- servlets, then jsp (since jsp's are basically servlets with a different
implementation focus - the view). You'll find that servlets on their own
are just for controlling/briding your application to your jsps and not much
else.
- Springframework (www.springframework.org): an open source framework that
makes web stuff really nice, flexible and seperates concerns very well - but
learn only when you know the core stuff
- hibernate (www.hibernate.org): a framework that maps your objects to the
database for you and does so transparently with very little effort or
overhead - I'd still only recommend using this when you know sql and jdbc
(java's way of doing sql).
- an application server, like orion/resin/tomcat (you can't deploy your
software without an app server to put it on, so spend some time learnign
this).
- your database. if you don't know databases, you can't store persistent
information. To be honest, most web projects aren't worth doing unless you
are backed with a database. Try mysql first since it's really lightweight
and easy, then move to postgres when you graduated from that.
- jakarta-commons: there are a lot of common programming tasks that you are
bound to do over and over eventually. Look at apache jakarta commons for
some libraries to make these tasks easier.
- sitemesh: if you are going to be doing web things, you definately want
this. It allows you to decorate html (or whatever) pages with a common
layout, thus making it a lot easier to code up specific pages since you
don't have to include the header and footer on every page and you can do
this on non-jsp pages as well.
 
J

Job Numbers

Also, don't expect to learn everything I mentioned in 4 days. Even an
experienced programmer learning all of this stuff would take him or her
awhile to know everything. Just attack it all in pieces. Start simple and
build more comlicated as you need it. If all you want to do is applets,
then maybe that's all you should do after you learn the core java language
itself. However, applets aren't that popular - I actually hate them
personally. If you really want to establish yourself as a java programming
with employable skills, spend a month or two learning all the stuff I named.
 
J

Job Numbers

Roedy Green said:
It is overwhelming. There is no way you can even know what all the
acronyms mean, much less familiarity with all the code. You have to
pick something and specialize in it.

While I can see why people would think that, it's not inhumanly possible to
know most of the core stuff and a bunch of open source projects that can
help you do things faster. I know of some developers on my team that don't
know everything too, but I'm sure it's because of a few reasons:

1. They feel overwhelmed because they know they aren't in control, but they
are the kind of people that are never in control. Take control of your life
and your progamming, work on each thing one a time and within a week or two,
if you have the competence, you should know all the core stuff.

2. Programming isn't realy a passion for them. If it's just a job, you have
no reason to care what everything is, so you just wanna do one small thing
and let the other people do it.

3. Which leads me to people who don't like responsibility. They'd rather
work in a decentralized organization and work on something so small and puny
that when the shit hits the fan, they can't be held responsible. At the
same time, they just follow and hope the guy who does know everything is
doing everything right.

4. You actually believe the hype. "Use EJB, use this and use that", when
all you really need is something 1/10th the complexity.

5. Short of proper training. If all you've ever done is hack away at code
and don't really understand how to think the bigger picture, design,
refactor and generally understand what is "good code" and what is "bad
code", then you are in a whole world of trouble.

6. Lastly, it comes down to shear logical/technological intelligence. If
this stuff appears hard for you, you could just be in the wrong field
altogether. While some stuff just doesn't work as expected, a lot of it
really does work like it's supposed to. In fact, you really don't have to
read a lot of books if you just had a good IDE (like Intellij IDEA).

Now, is Java perfect? Hell no. There are lots of stuff I wish Java did in
it's core language or extensions that other people had to set out and do for
them. I guess you can't please everyone, but when people are migrating to
more agile methodologies and lighter frameworks such as spring or hibernate,
it makes me wonder why all the bloated Sun specifications and the marketing
campaigns that go with them haven't hit the grave yet. Don't fall into the
hype. Just keep it simple, be smart about how you develop things and take
control of your software. It is your project after all, learn the skills
and gain the knowledge that will inable you to do that.
 
J

Job Numbers

Kevin McMurtrie said:
Convince them to switch to Resin. It's professional grade but costs
very little money. I haven't used JRun in a few years but it was a
hideous nightmare. Tomcat is pretty good too - and even free.

Get their Java system working properly and that will be a chance for you
to work on Java software development. Stick with J2SE. J2EE has high
coding and support overheads so you don't want to use it unless you
really need its features.

Not all of J2EE, just the bloated EJBs. Stuff like java mail, jdbc, etc. is
still widely used and don't have great learning curves or have a gazillion
things to remember to make it work properly. In fact, without them I don't
even know how you would accomplish most common business applications.
Unlike EJB, you can run those outside of an app server. Sure some
frameworks like Hibernate (that I do use occasionally) can be used instead
of JDBC, keep in mind that you are still using JDBC.
 
R

Roedy Green

While I can see why people would think that, it's not inhumanly possible to
know most of the core stuff and a bunch of open source projects that can
help you do things faster. I know of some developers on my team that don't
know everything too, but I'm sure it's because of a few reasons:

The thing that gets me furious are the blurbs written at the head of
every web page to tell you in "summary" what the project is about.

Nearly always they try to impress rather than inform. They give you
all sorts of meaningless sales babble and leave you with not the
slightest idea of what the product is FOR.

Everything is touted as a universal blood tonic that solves every
known computing problem.

I don't need to be told it is exciting. If it were, I could feel it
for myself.

I try to rectify this lack with my Java glossary entries, but often I
can't for the life of me figure out what the product does no matter
how much I read about it.

What I would really like is some honesty. "People with these sorts of
problem might consider my product. People with this sort should look
to X."
 
J

Job Numbers

Roedy Green said:
The thing that gets me furious are the blurbs written at the head of
every web page to tell you in "summary" what the project is about.

Nearly always they try to impress rather than inform. They give you
all sorts of meaningless sales babble and leave you with not the
slightest idea of what the product is FOR.

Everything is touted as a universal blood tonic that solves every
known computing problem.

I don't need to be told it is exciting. If it were, I could feel it
for myself.

I try to rectify this lack with my Java glossary entries, but often I
can't for the life of me figure out what the product does no matter
how much I read about it.

What I would really like is some honesty. "People with these sorts of
problem might consider my product. People with this sort should look
to X."

You are right. The best solution is just to spend 2-3 days looking at what
is out there with no objective. Just look and see what's out there and get
a good grasp what all the frameworks do and what categories of problems they
solve. Yeah, you are basically doing nothing for your project, but it will
give you the knowledge to make better decisions. I think every person that
knows about most of the stuff out there has done this.

I guess when it comes to doing stuff seriously in Java, you have to read and
be aware for the first 3 months until you feel really, really confortable
with stuff. Then, you can afford to slip on reading on what all of this
stuff is and when it comes time to learn something new, hopefully you can
just take it head on and start using it with minor problems.

I'd honestly stay away from things that have Sun's stamp of approval. I
know that sounds weird, but some of the best frameworks I use
(spring/hibernate) are not in any way done by the people at Sun and I cannot
imagine doing the work I do every day without them. Also, get a good IDE if
you don't have one already and learn to use it. if you are just using some
crappy text editor, or something barely better than that, you are obviously
going to kill yourself eventually. Go to jetbrains.com, download IDEA and
give that a try. Honestly, after you spend a week in that thing, you won't
use anything else - ever.
 
K

Kevin McMurtrie

Job Numbers said:
Not all of J2EE, just the bloated EJBs. Stuff like java mail, jdbc, etc. is
still widely used and don't have great learning curves or have a gazillion
things to remember to make it work properly. In fact, without them I don't
even know how you would accomplish most common business applications.
Unlike EJB, you can run those outside of an app server. Sure some
frameworks like Hibernate (that I do use occasionally) can be used instead
of JDBC, keep in mind that you are still using JDBC.

JDBC is J2SE. Lots of other goodies like mail and XML
binding/marshaling can be added to a J2SE environment as easily as
adding a JAR file.
 
J

Job Numbers

Kevin McMurtrie said:
JDBC is J2SE. Lots of other goodies like mail and XML
binding/marshaling can be added to a J2SE environment as easily as
adding a JAR file.

True, but it's still j2ee. If jdbc is j2se now, it wasn't before (I don't
keep track of these things, but I know it was not standard in java 1.2).
Now I just include all the .jar files from the j2ee package because I end up
needing them eventually. Including jar files is kind of transparent to me
since I have a nice lib directory that IDEA includes for me all the time. I
hardly look at it anymore.

Anyway, the point is that j2ee > ejb, so if you want to learn ejb, then you
only mean a part of j2ee. But to be honest, you can do j2ee without ejb at
all, which is what most people do. Oh, most (note that I never said all) of
the people using ejbs shouldn't actually be using them in the first place.
They should be using lighter technologies like hibernate, spring, junit,
etc.
 
J

Jim Cochrane

That sort of question is best answered by studying the job ads.

...

I don't think the server side will look recognisable 5 years from now.
At some point customers will move in droves away from HTML forms to
hybrid client/server computing with the client providing the UI and
the server providing clean binary data. What we are doing now is a

This sounds like a reasonable prediction. How do you (or others) see web
services fitting into this scheme, if at all?
 
S

Sudsy

Job Numbers wrote:
<big snip>

I WAS going to avoid replying to the original response, waiting to see
whether others would comment. Unfortunately, it's going from bad to
worse and so cannot escape some observations from this quarter.
While I can see why people would think that, it's not inhumanly
possible...

Now there's a clear, unambiguous statement.
I know of some developers on my team that don't know everything too...
Lastly, it comes down to shear logical/technological intelligence.

As opposed to knowledge of the English language. ;-) I believe you
might have meant "sheer" here.
It is your project after all, learn the skills and gain the knowledge
that will inable you to do that.

Support language familiarity: inable (er, enable) yourself!
True, but it's still j2ee. If jdbc is j2se now, it wasn't before (I don't
keep track of these things, but I know it was not standard in java 1.2).

Check the javadocs. The java.sql package has been around since 1.2.
I'd honestly stay away from things that have Sun's stamp of approval. I
know that sounds weird, but some of the best frameworks I use
(spring/hibernate) are not in any way done by the people at Sun and I cannot
imagine doing the work I do every day without them. Also, get a good IDE if
you don't have one already and learn to use it. if you are just using some
crappy text editor, or something barely better than that, you are obviously
going to kill yourself eventually. Go to jetbrains.com, download IDEA and
give that a try. Honestly, after you spend a week in that thing, you won't
use anything else - ever.

Hmmm...JavaServer Faces (JSF) grew out of Struts. In point of fact,
Craig McClanahan (original author of Struts) was specification lead
for JSF. So Sun has no good frameworks?

I'm just trying to counter some of your misinformation. While I
appreciate your attempts at elucidation, people reading your
replies are likely to become MORE confused.

You're entitled to a personal opinion but it seems a tad harsh
and doesn't jibe with my experiences or those of many practitioners.
I WILL grant you that not every project requires EJBs and some of the
other functionality incorporated into a J2EE server. I find myself
quite satisfied with an Apache/Tomcat/Struts/Tiles architecture.

Cheers!
 
J

Job Numbers

Jim Cochrane said:
This sounds like a reasonable prediction. How do you (or others) see web
services fitting into this scheme, if at all?

Web Services is a solution is an entirely different breed of problems. Web
Services have actually been used long before they were developed, we just
didn't use xml and/or http to do them, but believe me, they were there in
some form or another. Web Services are just the next step of distributed
computing a heterogenous environment. That doesn't mean they are the best,
it just means they can do more than before, and much easier to boot. In the
end, it's just another form of middleware that provides marchalling, remote
procedural calls, data formatting, etc. between two processes.
 
J

Job Numbers

Roedy Green said:
That sort of question is best answered by studying the job ads.

I'd say right now the action is mostly server side. You can get
started with SQL, then Servlets, then JSP, then enterprise Java
beans(EJB).

see http://mindprod.com/jgloss/sql.html
http://mindprod.com/jgloss/servlet.html
http://mindprod.com/jgloss/jsp.html
http://mindprod.com/jgloss/ejb.html

The people making big money are those who know how to do Unix
administration. Boring but lucrative. You could get started learning
to manage a small Linux server.

All this needs a good underpinning of vanilla Java. Doing Applets
invites the public to critique your work and gets you some exposure
which could lead to work that lets you expand your horizons.

See http://mindprod.com/jgloss/projects/projects.html
for ideas for projects to teach yourself Java and beyond.

I don't think the server side will look recognisable 5 years from now.
At some point customers will move in droves away from HTML forms to
hybrid client/server computing with the client providing the UI and
the server providing clean binary data. What we are doing now is a
stop gap measure caused mainly by MS's success at foiling Java on the
desk top. From the point of view of data entry validation, it is more
primitive than the punch card.

You are wrong in terms of validation. The reason java doesn't have
validation is because they left it open-ended - very open-ended. Once you
are using a validation framework or write one yourself, validation can be as
powerful as you want it to be.

And no, I don't see web forms going away. In fact, everything is move to
the web just because it provides a lot of benefits for both users and
developers. And if you use the right frameworks and tools, you can make a
web and thick-client version of the same app with very little duplication if
your requirements dictate it too. Javascript can do a lot to emulate the
power of thick-client controls as well. It might not very good at
validation, but that's something you want to put below your web-tier anyway
so it's only in one spot.
 

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

Members online

No members online now.

Forum statistics

Threads
474,430
Messages
2,571,676
Members
48,796
Latest member
Greg L.

Latest Threads

Top