Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Java, Where To Start?

ScuttleMonkey posted more than 6 years ago | from the that's-pure-concentrated-evil-coming-out-the-back-of-you dept.

Java 558

I'm a web developer who has design and programming experience. So, VB, ASP, PHP, Coldfusion, Perl, even C and C++ I have in my belt. I also use Dreamweaver and/or do a lot of my HTML/XHTML/JavaScript coding by hand. So, the DOM, DHTML, etc, all good to me and even OOP thinking and design I have when I code. And I even have MySQL and other databases, again, not an issue here. So, my weak point is — Java — I see so many jobs out there with J2EE, Hibernate, Eclipse, Netbeans. Beside the obvious, which is to learn Java the core language, I don't know where else to go from there. There is so much! What should I read? in what order? What software do I require? UML? Swing? I mean, what is the curriculum required for someone to say they are a solid Java developer? Even assuming I have to go through Java itself, what are the good books out there?

Sorry! There are no comments related to the filter you selected.

Don't (1, Insightful)

johnjaydk (584895) | more than 6 years ago | (#24830943)

I would say don't.

Everyone and his dog does Java these days. Including 100.000 guys in India.

Be smart and find something new, cool and on the rise.

Re:Don't (0, Offtopic)

Anonymous Coward | more than 6 years ago | (#24831091)


That's what I'm learning

I beg to disagree (5, Insightful)

thermian (1267986) | more than 6 years ago | (#24831155)

Java is a good language to learn for the current marketplace.

The real problem thats putting people at risk of outsourcing is not the choice of language.

Its all about your skill as a programmer. If you're average, then there are plenty of average coders willing to work for less in India.

No, you've got to be better then average, great even, and that takes a lot of work.

Re:I beg to disagree (4, Interesting)

MrNaz (730548) | more than 6 years ago | (#24831305)

Come on now. I'm getting tired of all the "I'm thinking of learning $fooCommonThing and I need Slashdot to spoon feed me Google results." type questions.

I cannot believe this made front page when there are other, rather good questions in the firehose that would result in good dialog and idea exchange, but that get rejected.

Seriously, is there some shortage on Java dicumentation out there or something? Granted, I don't know the language as I never had a need for it, but I can't trip over without falling into a pile of Java tutorials.

Here's my answer [] to this particular Ask Slashdot.

Re:I beg to disagree (2, Insightful)

morgan_greywolf (835522) | more than 6 years ago | (#24831441)

Agreed. I don't see how anyone would be unable to find information about Java. I search for obscure and finer points of HTML, CSS, Python, Perl and other stuff all the time and run into Java stuff in my search results. I see so much information about Java that I sometimes puke Java in my sleep!


It's not that hard to find [] .

Re:I beg to disagree (4, Insightful)

prenk20 (1028148) | more than 6 years ago | (#24831475)

Agreed, if you are as familiar with php C/C++ like you claim to be, then you should find migrating to Java no problem at all, it is afterall a C derived syntax.

Re:I beg to disagree (2, Insightful)

Anonymous Coward | more than 6 years ago | (#24831395)

Companies are perfectly willing to sacrifice good code for mediocre as long as they can pay the programmer less.

Re:Don't (5, Insightful)

O('_')O_Bush (1162487) | more than 6 years ago | (#24831197)

I don't understand your logic. Java is fast, powerful, portable, and clean. Just because a lot of other people have realized how great it is doesn't mean that one shouldn't learn it. Java seems to be one of those things that people don't want to use just because it's "too" good.

Re:Don't (5, Informative)

Anonymous Coward | more than 6 years ago | (#24831217)

As someone who's worked in Java with some of those 100.000 guys in India, they may know Java, but most don't know java well. The vast majority of programmers either here or there can solve a problem, but not consider the security risks in their solution, nor necessarily come up with an elegant design for doing so.

Having said that, I've used hibernate (once, to get it set up and configured, it works well enough we didn't have to go back and change it), struts/struts2, and tiles. Most of these are XML configuration rather than coding. If you can do make files, and handle any markup language, these won't be a problem.

It sounds like your main concern is learning java itself. Since you know C/C++ the syntax and conceptualizations won't jump out and bite you. I'd recommend grabbing a project that interests you (or that needs to be done), and just doing it. Use Eclipse, its tools will make your life MUCH easier (unless you like coding c/c++ in a vi-like environment, in which case by all means use emacs/vi/editor of choice). I'll probably get slammed for saying this, but learning java isn't any harder than learning VB, (easier than C/C++ which is what I'm currently picking up), it uses a different namespace, and slightly different approach, that's all. If you're a competent programmer (and from your post, it sounds like you are) then it's just going to take some time/hard work to get used to the new language's quirks.

Re:Don't (2, Insightful)

Anonymous Coward | more than 6 years ago | (#24831279)

so what, you can do something smart, new, cool and on the rise in Java, if the indian guys scare you, change career to plumbing.

Re:Don't (1)

sabit666 (457634) | more than 6 years ago | (#24831307)

And you wonder why they "took yer jub!".

You mean he shouldn't use a language... (0)

Anonymous Coward | more than 6 years ago | (#24831347)

You mean he shouldn't use a language that is popular

Re:Don't (1)

smallshot (1202439) | more than 6 years ago | (#24831387)

I agree with "don't" unless it's what you really want to do. Sure, there are a lot of java jobs out there, usually looking for entry level peons they can underpay and overwork (at least, that's what I see when looking at jobs).

If you want a respectable job, it should be easier to find if you have a lot of experience in one or 2 areas you have focused on and enjoy. Having 7 years of experience in 7 different languages will most likely not get you the job that requires even 5 years of experience in one of those languages (especially in today's job market). Plus it really helps if you enjoy the language (and typical applications of it) you work with.

Good place to start... (-1, Flamebait)

Manip (656104) | more than 6 years ago | (#24830947)

You should download a copy of "C# express edition" which is a totally free version of Visual Studio.

Then by studying that language you will in-turn learn Java as it is basically just a rip off with a much better IDE than anything Java has.

NetBeans is a laggy nightmare to work with.

Re:Good place to start... (1, Informative)

kannibal_klown (531544) | more than 6 years ago | (#24831001)

I never really liked NetBeans, I tried it with ver 5 and decided to stick with IntelliJ and Eclipse.

Recently I decided to give NetBeans 6.1 a try and was quite impressed. There was little/no noticeable lag, unless I was coding while I was "running/debugging" a long-running process.

There are many things it does that I like over Eclipse.

Re:Good place to start... (1)

thermian (1267986) | more than 6 years ago | (#24831095)

Eclipse is pretty good actually, I hated netbeans too.

Re:Good place to start... (-1, Flamebait)

Anonymous Coward | more than 6 years ago | (#24831147)

Java doesn't have an IDE, you pure, concentrated witch.

Java makes me sad (0, Insightful)

Anonymous Coward | more than 6 years ago | (#24830949)

I'm continually surprised by the number of shitty jvm-version-dependent apps that people get paid to crank out. Don't be that guy.

Wrox Press (5, Informative)

dnoyeb (547705) | more than 6 years ago | (#24830957)

I started Visual C++ 5 with a book called "Beginning Visual C++ 5" by Ivor Horton from Wrox Press. When I started in Java I bought a book titled "Beginning Java" by Ivor Horton.

I would start there. Java is really straight forward OO language. The only issue you will have coming from C++ is to let go of destructors and realize Java does not use them. Many from C++ take about 6 months to stop tryng to make a finalizer into a destructor.

Re:Wrox Press (0)

Anonymous Coward | more than 6 years ago | (#24831329)

I started Visual C++ 5 with a book called "Beginning Visual C++ 5" by Ivor Horton from Wrox Press. When I started in Java I bought a book titled "Beginning Java" by Ivor Horton.

I would start there. Java is really straight forward OO language. The only issue you will have coming from C++ is to let go of destructors and realize Java does not use them. Many from C++ take about 6 months to stop tryng to make a finalizer into a destructor.


VC++ went from 4.something to 6.0.

Re:Wrox Press (2, Interesting)

multipartmixed (163409) | more than 6 years ago | (#24831359)

Does Java uses finalizers? If so, how do they differ from C++ destructors?

(Honest question - I'm not a Java guy but IIRC I found the finalizer concept in Java useful in understanding finalization (called during GC) in Spidermonkey.)

Just a thought.... (4, Insightful)

jtcedinburgh (626412) | more than 6 years ago | (#24830971)

Isn't it better to specialise in a few of the varied languages and systems you have worked on, rather than trying to spread yourself thin?

There is truth in the saying 'jack of all trades - master of none'.

So, maybe concentrate on building up the other skills, rather than trying to 'bag' a new technology. I used to try to gain exposure to loads of different technologies but found that when you do so you do at the expense of the 'depth' of knowledge you have in any one.

Re:Just a thought.... (1)

skrolle2 (844387) | more than 6 years ago | (#24831075)

For programming, that reasoning is bullshit. The more code you see and write, the more programming paradigms and syntaxes you have seen and used, the better programmer you will be.

Re:Just a thought.... (1)

OG (15008) | more than 6 years ago | (#24831251)

I don't think that jtcedinburgh meant that the OP should remain ignorant of other languages or technologies. Of course it's important for a programmer to stay on top of new technologies and recognize how they fit into the bigger picture.

On the other hand, I do agree with him that, while having knowledge of many tools is admirable, if you spend your time trying to learn some of everything, the likelihood of becoming a true master of any one language or technology dwindles. It's important to try to reach a balance and not be too specialized or too broad.

If I'm hiring a developer, I'm more interested in someone who can do the task incredibly well and efficiently as opposed to someone who has many abbreviations on their resume, but in reality only kind of knows how to use a language, In the end, people who become too broad aren't going to know how to use a language's features to their greatest extent (or truly recognize the limitations of a given language or technology).

Re:Just a thought.... (4, Insightful)

cronot (530669) | more than 6 years ago | (#24831369)

The problem as I see it (I'm in the same situation as the poster - I have experience in almost all languages / DBs / etc. he has, except Java) is that he has experience in areas that are saturated and / or in a decline trend, and none in an area with a growing demand.

So I think it's not really a matter of being a "jack of all trades", as you put it, but keeping up with the market demands. I actually wouldn't like to learn Java right now, as I think I can do pretty well with my current experience. I'm more interested in learning other newer languages / technologies that seem more interesting and more promising than Java (even if sometimes not as mature or proven), like Ruby, Python, etc... Unfortunately, none of these has nearly as much demand as does Java, so I'm more compelled to learn it to keep myself hireable.

Btw, it's not that I think Java is a worse language than the ones I'm more interested in, it's just that I think that learning Java wouldn't be as fun or rewarding than the alternatives. But I'm more than willing to be convinced that I'm wrong, so I'll watch this discussion closely for tips.

In the same boat... (0)

Foofoobar (318279) | more than 6 years ago | (#24830981)

I started with Eclipse (as I use it for LAMP development) and switched to Tomcat since I was already doing web dev and it was the quickest paradigm to switch to. I'm also trying to pick up STRUTS2 which judging from your background may also be a good choice for you. From there, the options are based upon your needs. For a book, I would not suggest Java headstart as you obviously are a bit further along in your development knowledge. Perhaps an O'reillys book on java.

Re:In the same boat... (4, Informative)

SirLurksAlot (1169039) | more than 6 years ago | (#24831063)

I started with Eclipse (as I use it for LAMP development) and switched to Tomcat

Ummm, what? Eclipse is an IDE, Tomcat is a container for web servers. Tomcat and Apache can be used with Eclipse with a nice little plugin [] for testing.

Re:In the same boat... (0, Flamebait)

Foofoobar (318279) | more than 6 years ago | (#24831103)

Duh. But he may want to know what tools to use. Eclipse is a great tool for Java development. He may want to use a different tool but Eclipse is one that alot of Java developers use.

Re:In the same boat... (5, Informative)

SirLurksAlot (1169039) | more than 6 years ago | (#24831175)

Ok, you're missing my point, which is that Eclipse and Tomcat have absolutely nothing to do with each other. You don't need to "switch" from one to the other because they are used for entirely different purposes. Yes, they're both tools, but it doesn't make any sense to tell the parent that you switched because one is used to write code and the other is used to serve applications. It makes you sound like you don't know what you are talking about, and will only confuse new developers.

Re:In the same boat... (0)

Anonymous Coward | more than 6 years ago | (#24831077)

Learn Stripes instead of Struts 2. It's like of like Struts merged with Ruby on Rails.

Head First Java (5, Insightful)

WilliamBaughman (1312511) | more than 6 years ago | (#24831361)

O'Reillys "Head First Java" is IMHO the best technical resource / learning tool I've ever used; it's honestly fun to read. You can read it online for 30 days free using the Safari service.

A favorite excerpt of mine (on how to remember the single-inheritance, multiple-interface concept):

Roses are red,

Violets are blue,

Extend only one,

But implement two!"

Re:In the same boat... (1)

romango (632756) | more than 6 years ago | (#24831411)

I agree. Get Eclipse, install Tomcat locally. get the Eclipse Tomcat plug-in. Use STRUTS. OJB works well with MySQL. It takes awhile to get it all configured.

Thinking in Java (5, Informative)

yanyan (302849) | more than 6 years ago | (#24830983)

Thinking in Java is nice. And it's free. []

Re:Thinking in Java (2, Interesting)

Pengo (28814) | more than 6 years ago | (#24831269)

Yup, I agree 100%.

I started reading this book from the internet in 1999 when I started my career in programing Java. It was a great place to start, there might be better material out now but that's what gave me my jump start.

If you have ColdFusion (1, Informative)

Anonymous Coward | more than 6 years ago | (#24830999)

You have Java. You could start by figuring that out.

Re:If you have ColdFusion (1)

Sczi (1030288) | more than 6 years ago | (#24831381)

ColdFusion the language, and Java the language have absolutely zero in common in this context, but nice try. If you don't believe me, go ahead and reply to some job ads for Java programmers, and tell them "no, but I'm great with ColdFusion". However, note that the opposite approach may actually work if it's a big CF shop (if such a thing even exists anymore, sniff).

Re:If you have ColdFusion (0)

Anonymous Coward | more than 6 years ago | (#24831417)

Never said that they did, but you can mix coldfusion and java in the same pages and start relating the two. If someone has coldfusion experience, it's not a bad way to get a start.

What about C# (0)

coop247 (974899) | more than 6 years ago | (#24831017)

I would suggest C# instead of Java. They are very similar languages but I find C# to be easier and more powerful. The Visual Studio development environment just blows Eclipse out of the water. I know its easy to hate MS, but their dev tools are just better than everyone else. Also, there are just as many if not more .NET jobs out there.

Re:What about C# (2, Informative)

the eric conspiracy (20178) | more than 6 years ago | (#24831059) -

Search Java - 14480 hits
Search C# - 7146 hits

Re:What about C# (1)

coop247 (974899) | more than 6 years ago | (#24831403)

Wow, a one word query, bravo. Unfortunately Java is included in nearly every programming ad, whether or not it is the main dev language required. My last 3 jobs had Java in the ad, yet every one of those companies did all new dev in C#. I'm not saying Java it isn't popular, but .net is right up there with it in terms of use.

Re:What about C# (-1, Troll)

speedtux (1307149) | more than 6 years ago | (#24831469)

Yes, and there are even more jobs available in sharecropping and cleaning toilets than in Java programming. And there's a good chance that they would be more exciting, too.

Re:What about C# (1)

skrolle2 (844387) | more than 6 years ago | (#24831111)

I agree that C# is a nicer language than Java, but Eclipse is so much better than Visual Studio out of the box. I use an add-on called ReSharper which makes VS almost as good as Eclipse, but not quite.

Also, knowing java allows you to learn C# very, very quickly, and then you can decide for yourself which language you like better.

Re:What about C# (1, Interesting)

Anonymous Coward | more than 6 years ago | (#24831231)

In what ways is C# better than Java? Same with Visual Studio being better than Eclipse. You're making one of those "more better" statements without actually qualifying it.

My recipe for learning Java is to get Netbeans, Findbugs and PMD and start here.

You should also learn Groovy/Grails for getting stuff done quickly. Netbeans 6.5 will ship with these plugins. It's pretty cool stuff.

Thinking in Java (5, Informative)

lurker-11 (977638) | more than 6 years ago | (#24831021)

Thinking in Java is a good book on the Java language. You can read it online at the author's web site: []

Re:Thinking in Java (1)

joshuadmorris (322664) | more than 6 years ago | (#24831083)

I recently did a personal review of most of the books out there to help a friend find the same thing. Since you are already a developer and familiar with software development, I think this is the best book out there. It is very in depth and truly does a good job of explaining how to approach a problem from a "Java" perspective.

As far as learning the J2EE stack, I would not begin that until you have a firm handle on Java. I haven't checked those books out yet since my friend is just beginning. I am sure others have some good input on what's available.

Not just a book (1) (142825) | more than 6 years ago | (#24831455)

The book is pretty good. I have a signed copy of the book. He also offers a course based on the book which is pretty good.

What a bad software engineer you are (-1, Troll)

Anonymous Coward | more than 6 years ago | (#24831033)

Honestly, all of these acronyms you can list, and yet you don't have the initiative to learn another language without posting silly questions like this?

Initiative is one of the primary requisites for a programmer. It's something you're born with or not. Second to that you need to be able to abstract the concepts you've already learned and apply them to a different technology.

Perhaps you would be better suited in some management role where you can get off on the bureaucracy and buzzwords. I honestly think you naturally tend more towards that than programming. You'll make more money too.

Re:What a bad software engineer you are (-1, Troll)

Anonymous Coward | more than 6 years ago | (#24831153)

Indeed, all he said was "I know X,Y,Z, bla bla bla, I know a lot of stuff, bla bla bla, I'm good, bla bla bla. But I'm too dumb to learn something new on my own even though I know all that shit I just listed."

Too bad you got scored as troll, because that's exactly what I read too.

Re:What a bad software engineer you are (0)

Anonymous Coward | more than 6 years ago | (#24831331)

A vision of love, wearing boxing gloves and singing hearts and flowers.

If you know C++ ... (2, Insightful)

cpu_fusion (705735) | more than 6 years ago | (#24831035)

... then learning Java, EJB, etc. ... it should be a walk in the park. You shouldn't even need a book. Just go get the specifications from the Sun site and read them.

Seriously, Java is orders of magnitude more simple than C++. (That's a pro and a con.)

where to start (2, Funny)

Anonymous Coward | more than 6 years ago | (#24831047)

public static void main () {

Try (5, Informative)

icknay (96963) | more than 6 years ago | (#24831051)

For basic coding practice, try the free [] -- it has little coding problems (logic, strings, arrays, recursion) that run right in the browser, so you get immediate feedback. It's great for building skill in the basics, but it's no substitute for building larger programs. Disclaimer: I built it

Look at Open Source Java Projects (1, Informative)

conner_bw (120497) | more than 6 years ago | (#24831055)

I would start by looking at a few open source Java projects, learn how to compile them, and make changes to them.

For example, a few weeks ago I submitted a OS X copy/paste key binding patch to JEDIT [] . I am by no means a Java developer, but since I use that product every day to do web apps, I got frustrated enough that I went ahead and fixed a problem myself.

Stuff like Azerus/Vuze [] , Cyberduck [] , and Open Office are used on my computer regularly. All of which are are Java based. Downloading the sourcecode to products you actually use and looking at it is a good way to learn IMHO.

Re:Look at Open Source Java Projects (0)

Anonymous Coward | more than 6 years ago | (#24831255)

Open Office is not Java based.

Re:Look at Open Source Java Projects (1)

RedK (112790) | more than 6 years ago | (#24831287)

OpenOffice is not Java based at all. The bulk of it is written in either C or C++. Sun doesn't just have Java based products, heck even the Java Desktop System is not made of Java at all, it's just a modified Gnome, written in C.

Re:Look at Open Source Java Projects (2, Funny)

Anonymous Coward | more than 6 years ago | (#24831313)

What?! Well, why is Open Office so slow then?

Servlets (0)

Anonymous Coward | more than 6 years ago | (#24831065)

Learn servlets, and database connection pooling.

Don't get pushed into learning the full J2EE. Any project using EJB's is going to be a complete mess.

To work with just servlets and database connection pooling, get Tomcat and DBCP from Apache.

Once you have some idea of how to work with those those two, you can use JSP with Struts or Spring and Hibernate, or whatever.

Read some core Java books (1, Interesting)

Anonymous Coward | more than 6 years ago | (#24831105)

I would read:
Head First Design Patterns
Effective Java
Pragmatic Programmer
I found it useful when I was learning the language to have Java in a nutshell

If you want to do Java web programming learn Struts.

sun certified developer. (4, Informative)

leuk_he (194174) | more than 6 years ago | (#24831121)

Sun has developed a program to train for java.

read at the sun site []

java is relative simple. Those certification programs give you a guideline what is involved in certain roles. But java is MUCH and lots of simple libraries. that is what people underestimate.

I understand you might not need certification, but the knowledge described there gives a good idea what you need/can put on your CV.

Head first (3, Informative)

oliderid (710055) | more than 6 years ago | (#24831123)

My first Java book was: head first. []

This great if you have little experience with an object oriented language. They state that they are funny...Well sometimes they are :-).

Another way to learn java is to code a little Java mobile App. This is fun, the API is quite limited usually and so you don't need hours of documentation before seeing something nice.

The blackberry IDE was free and really nice to use back in my early days. You get the basic before heading to more serious things.

Caught somewhere in your belt (-1)

Anonymous Coward | more than 6 years ago | (#24831127)

There is no use having it in your belt. You must have it _under_ you belt

Job or knowledge? (2, Insightful)

Anonymous Coward | more than 6 years ago | (#24831129)

If you want a Java job, just update your resume to say that you know Java. I have met lots of J2EE experts at work, who would not be able to code a "Hello World" program, if their jobs depended on it. Also learn lots of buzz words.

If you want to learn Java for knowledge, join a community college, install Eclipse and get started.

Don't use Java (4, Informative)

Anonymous Coward | more than 6 years ago | (#24831131)

As a person in charge of desktop imaging and 3rd level support at a company of 100,000 desktop and notebooks, I'd first say, "don't use Java at all". My second thought is, "well, if you must use it at all, use it only on the server.".

Unfortunately Sun, in its infinite wisdom, has no idea at all how to patch. They have security vulnerabilities all the time and they make you install a completely new version of Java in a new folder each time. Their "updates" leave the older vulnerable versions behind (and still accessible by malicious code). Their updates break applications all the time. We are constantly having to deal with issues like the current one we have: there are known vulnerabilities in JVM 1.6.0_05b13, but there are some serious problems with deploying the "fixed" version as it causes bizarre error messages and slows Internet Explorer down. Both are acknowledged bugs, but won't be fixed soon. So you end up stuck between securing the systems and having the systems actually work right.

Sun Java is a continual nightmare.

I'll say one thing from Microsoft - when you could use MS Java it never (not once in the several years we supported it) broke apps and patches were actually PATCHES and not whole new broken versions.

Java - just say no until they actually learn how to update and patch correctly.

Re:Don't use Java (1)

RedK (112790) | more than 6 years ago | (#24831373)

I'll say one thing from Microsoft - when you could use MS Java it never (not once in the several years we supported it) broke apps and patches were actually PATCHES and not whole new broken versions.

Rewritting history much ? MS Java almost killed Java by breaking every app written to the Java standard. They stuck with an old specification which they then extended with proprietary stuff and made developpers believe that it was Java when in fact it wasn't even at all by the time the court case forced them to remove it from circulation and stop calling it Java.

Re:Don't use Java (1)

multipartmixed (163409) | more than 6 years ago | (#24831409)

What's REALLY odd is that the Sun Solaris guys *do* know to patch. They've been doing a great job for over a decade.

Well, although, recently, they've had their heads messed with by the people who want to sell support licenses.

But I can't for the life of my understand why the Java group is so thorough thick. It's as though when they started the Java project they hired ONLY noobs, and even today, have only promoted from within and forbidden senior developers or experienced managers from joining the group.

Re:Don't use Java (0)

Anonymous Coward | more than 6 years ago | (#24831429)

They have security vulnerabilities all the time and they make you install a completely new version of Java in a new folder each time. Their "updates" leave the older vulnerable versions behind (and still accessible by malicious code).

It's even better than that. They actually do package their updates as patches to previous versions.

So what happens when you're installing 1.6.0_07 is that it creates the new 1.6.0._07 directory and then installs 1.6.0 into it. It then patches it to 1.6.0_01, then 1.6.0_02, and so on up to 1.6.0_07.

Which completely misses the entire point to using patches in the first place!

And on that note:

java -version
java version "1.6.0_06"

Odd, I could have sworn I patched that to 1.6.0_07 ... oh, I did. Java 1.6.0_06 is still sticking around and apparently Java neglected to update the little Java stub it sticks in C:\WINDOWS to the new location. Son of a bitch.

heh (-1, Flamebait)

Anonymous Coward | more than 6 years ago | (#24831139)

Java sucks. It's slow as crap.

Start simple. (5, Insightful)

Anonymous Coward | more than 6 years ago | (#24831161)

Please, for the love of God, forget the frameworks. They come and go pretty quickly and each one is usually over-hyped to begin with.

Learn to be a great Java programmer. That means knowing the standard library in and out. Develop really good OO modeling skills. Learn what it means to write robust code. Understand and use exceptions effectively instead of littering blank catch blocks everywhere. All of these skills will serve you far better than knowing what arguments the RegistrarClassFactoryStubGeneratorJarBridge uses in its create() method. From there, as needs come up, you can experiment with higher-level abstractions. But please do NOT become one of those people that 'learns' that all database access should be handled through *insert-ridiculously-overcomplicated-framework-with-50-config-files-that-must-be-in-special-places.*

Aside: the reason Rails became so popular is because it managed to 'just work' without all of this inane configuration and magic files. The Java community is practically in love with complexity, since it is very enterprise-y.

It's not the language - it's the libraries (5, Insightful)

petes_PoV (912422) | more than 6 years ago | (#24831169)

Learning the mechanics of the Java language are the easy bit - when it boils down to the basics of the syntax, there's not much to it (since you already have many other, similar languages).

The key is the libraries: that's where it goes from being merely another OO language to being able to do something useful. I'd start by getting a simple "hello world" program running, then thinking up a home project which allows you to start adding features and functions.

Most of the documentation I've seen is pretty poor - it gives argument lists and describes functionality in isolation, but misses out the higher level WHY you would want to use a function. Learning that is where the gold is.

There is no single answer. (4, Insightful)

MythMoth (73648) | more than 6 years ago | (#24831173)

Java's an entire ecosystem unto itself these days. So there's no simple answer - you have to figure out what kind of apps you want to be involved in building, then that will inform your choice of Java based technologies. For the most part I do enterprise web site development, and that mostly on the server-side, so I'm a Java EE/Hibernate/Spring/Eclipse person. Plenty of professional experienced Java developers will never use any of those technologies!

Once you've figured out what kind of apps you want to be building, I'd suggest visiting the Sun Forums [] if you have any technical question and then poking around the site,, JavaRanch and the java usenet newsgroups to get a better feel for what's out there and how it's rated by developers. Feel free to drop me an email if you have any questions that you want to ask offline.

Ignore the naysayers - for the most part they don't know what they're talking about. Sure you should have other languages under your belt, sure there's offshore competition, but still, Java experts are in demand and they will be for a long time yet.

My opinion of what Java APIs are worth learning (3, Interesting)

hattig (47930) | more than 6 years ago | (#24831181)

The language itself won't be a problem if you've done C and C++, nor should OO concepts. So the difficulty is with APIs - what is worth it, and what isn't.

In terms of Java APIs (core or otherwise), I'd learn in roughly this order:

* Collections
* Reflection
* IO
* Servlets & JSPs then Struts, Tiles, Spring, etc
* JDBC, then Hibernate
* Axis (web services) and Apache HTTPClient

You don't need to learn them off by heart - I've seen people advance very slowly because they're trying to do that. It is enough to know what is what, so that when you have a problem, you know there is a solution, and where it is.

In terms of interfaces, I wouldn't bother with Swing or AWT really, until you need them. SWT ain't too bad (Eclipse uses it, and it's cross platform enough - Windows, Linux, Mac, Pocket PC, ...). Maybe you could be fancy and learn Fenggui instead! Then you could learn JOGL and write 3D games and the like.

Oh, and learn how to do Java on the command line first, use ANT to build and compile and deploy, then try Eclipse or NetBeans as an IDE. This way you'll avoid all the niceties that the IDE gives you that inhibits your initial learning.

I wouldn't bother with half of the enterprise wank, like Enterprise Beans and all that.

Consider not starting. (1)

Vellmont (569020) | more than 6 years ago | (#24831187)

I don't know where else to go from there. There is so much!

There's a lot because Java web technologies are large and can be complex. This can be a problem in itself. It's hard to really understand what you're asking without understanding what you're doing now. Do you have a job, or are you just interested in padding your resume with a broader base of skills?

Here's what I'll tell you. It's useful to learn a broad range of skills, but at a certain point you're just spreading yourself thin. You're having trouble finding out where to start because the technology has grown leaps an bounds. You haven't even mentioned half of the methodologies and competing technologies that exist in the Java world. If you really want to be "good" at Java web stuff, it's going to take a dedicated effort. Sure, you could learn a bit and create something functional. But why? It sounds like you're already a competent programmer in a variety of other languages, so why pickup Java?

Without knowing more about your background and goals, I'd hesitate to say you're just going to spread yourself thin. If you really want to learn something, learn some more general design patterns and techniques and apply them in a language you already know. That should be applicable to any language.

Just to add to the chorus (1)

cyranoVR (518628) | more than 6 years ago | (#24831191)

You've already got experience in VB and ASP...ASP.NET is a logical career path. You can use that as a springboard to learn C# and if you really want to you can learn Java from there.

Otherwise, the best way to get started in Java is to get a job where you can convince them you can learn it on the job.

O'Reilly's Java in a Nutshell (1)

bziman (223162) | more than 6 years ago | (#24831193)

I really like O'Reilly's Java in a Nutshell [] . Between that and Sun's online Java Tutorial [] and API Reference [] , you should be able to get a good start with the language itself.

For more "advanced" topics, there are whole books on Swing, Spring, Servlets, JSPs, EJBs, etc... each with their own encyclopedia of information -- you should definitely learn the core language first, and then decide which of these frameworks interest you, and pick one at a time to learn. Most places will hire you if you have solid Java skills, and will expect you to be able to figure out the framework.

There are many books on individual aspects of the Java language, such as Java Concurrency in Practice [] -- if you really want to be a Java expert. Most of those job listings you see don't require anywhere near that level of expertise, though.

Dont do it. Go C# instead. (1)

LibertineR (591918) | more than 6 years ago | (#24831203)

I dont want to start a flame war over Java vs. C#, my point is that you will likely find more work, and more interesting opportunities in the C# space than you will in Java, which is a pretty saturated market.

By learning C#, you can do ASP.NET 3.0 (a world away from ASP), a huge market in need of coders, you can branch out into things like SharePoint, the current hottest product in the marketplace, and even do stuff like Silverlight, which proved effective during the Olympics (If you ran Windows or SOME Macs).

The languages are almost identical, but you will find tons more FREE resources for developers. Microsoft has a development center at [] where you can download C# 2008 express for free, and there are lots of videos and tutorials there to get you started.

Again, nothing against Java, but why start like a guppy in a huge pond of Java sharks?

Re:Dont do it. Go C# instead. (0)

Anonymous Coward | more than 6 years ago | (#24831323)

The reason C# does not have a lot of sharks is because not a lot of people use it. C# has been out almost 9 years but there are reasons people don't use it.

One book: Effective Java (3, Informative) (583400) | more than 6 years ago | (#24831223)

Once you get the basic Java syntax (which will not take long looking at the langages you already know), read this book: Effective Java [] , by Joshua Bloch.
There is also a video on YouTube: Effective Java Programming with Joshua Bloch [] .
And you can read it on Google Books [] .

Groovy (5, Interesting)

mgkimsal2 (200677) | more than 6 years ago | (#24831235)

I'd suggest starting with Groovy ( then perhaps move in to Grails ( Groovy is a dynamic language that runs *on* the JVM, and can co-exist with native Java code, but requires far less boilerplate code to get anything done. If you're coming from a dynamic language background, Groovy will be a bit easier to understand.

This will allow you to get involved with Java technologies without as steep a learning curve as you'd require if you were doing it 'from scratch'. You can incorporate as much 'other' Java tech as you want as you go along, but you'll be up and running fast with Groovy. is few part series on did on Groovy and Grails for people coming to it from non-Java backgrounds. Never quite finished the series, but it's someplace to look to see if it's something to investigate further.

Good luck!

It depends what you want to do! (0)

Anonymous Coward | more than 6 years ago | (#24831247)

The problem that I found was that Java can be used in so many ways and in so many contexts you can spend a year just trying to figure out what the all the new terms mean.

For a simple setup for serverside web development with Java server pages and servlets try: Eclipse and Tomcat and the Sysdeo plugin for Eclipse/tomcat development.

Once you have figured out how to setup Tomcat with pooled connections for MySQL, Eclipse and produce some jsp's & servlets, learned the classes that java provides for web development you will have come a long way.

There are then extensions (OK not necessarily extensions, but other things to look at) like struts which provide a framework for developing web applications and J2EE which are essentially classes that run on seperate servers.

The list goes on and on, but once you've done some stuff with each of these you will have a pretty good idea of what is useful to you.

Java? (0)

Anonymous Coward | more than 6 years ago | (#24831253)

Err... Starbucks maybe? Or off the coast of India?

UML? Swing (0)

Anonymous Coward | more than 6 years ago | (#24831277)

Im afraid of your general request. Mostly because of the "What software do I require? UML? Swing?" part.

How come somebody who knows... "So, VB, ASP, PHP, Coldfusion, Perl, even C and C++ I have in my belt."

Even MySQL (seriulsy wtf?).... doesnt know that UML is not a software. and putting it on the same phrase as swing. id say you stick with php...

Avoid persistence frameworks (3, Insightful)

Kupfernigk (1190345) | more than 6 years ago | (#24831301)

I'm going to risk being upsetting here and say that, if you have any real experience with SQL, avoid things like Hibernate. They try and force you to do things the way the Hibernate developers think, and this is not good because they just regard the database as a persistence layer, adding a lot of complexity for the sake of things you may never want to use. Leverage your existing skills by trying to do things "directly" in Java, talking to the APIs as simply as possible. Because then you will be able to do things that the grunts cannot do, since you will get the full benefit of both technologies.

If you are a serious programmer and want to solve real business problems, concentrate on what Java does well - glue things together and use well thought out class structures to map onto the things you want to do.

In my admittedly limited experience over only 25 years or so, if you leverage the strengths of Java you can do things you can do in other languages about as fast, with good reliability, good debugging, good code re-usage and rare platform incompatibilities.

Oh, and get used to Derby (formerly Cloudscape), because you can then have your SQL database all bound up in your 100% Java application and still talk to spreadsheets etc. as easily as if you were using Access.

Some Pointers (hehe) (4, Insightful)

ilovegeorgebush (923173) | more than 6 years ago | (#24831311)

I've helped out with interviews where I work, and here's some of what we look for:
  • Experience - not just in Java, but also in the industry.
  • Core Java, Essential J2EE and Web Frameworks - understanding of core Java, its querks (reference checks: .equals() verses == for instance). J2EE is just a specification. Get used to that. Learn the basics of J2EE and how servlets, JSPs and the request/response process works (FTLOF, know the difference between GET and POST!). Struts experience is a good thing.

It's a difficult industry to get into as you're probably aware. Recruiting for Java posts is a minefield - it's full of people who should be stacking shelves in a supermarket.

I don't think you can go far wrong if you get as much experience in core Java as possible. The same goes for J2EE; if you understand what it is and know the trials and tribulations of building a web-app from scratch, you're on the right track. Then, and only then, should you move onto working with frameworks; so build applications both stand-alone and web, and do the boring stuff yourself (i.e., write your own web.xml.)

Spring and Hibernate are funny ones. Spring's just an IoC framework. Until you're proficient in OO design, you probably shouldn't worry about it. Oh, and learn what IoC is first. Don't just think 'spring' and say you know it. Very few people know why they chose spring as a framework (there are plenty of IoC containers out there).

Hibernate (an ORM solution) is a dark art. Get the basics done first. Write JDBC DAOs yourself and learn why you'd need ORM before you dive into it.

Basically, learn the core concepts.

Thick Books Unnecessary (1)

epistemiclife (1101021) | more than 6 years ago | (#24831321)

As others have no doubt mentioned, Java is a much simpler language than C++, and, if you know C++, learning the basics of Java will not take comparatively much work. I would recommend reading a lightweight book which concisely explains the basics, and then attempting to write some programs in the language. There is no need to get a book designed from programming novices. You might even look at the Java Tutorials online. [] Additionally, using Google to search for 'Java for C++ programmers yields some useful results, such as this one: []

Get Bloch's Effective Java (0)

Anonymous Coward | more than 6 years ago | (#24831335)

Get Joshua Bloch's "Effective Java: Programming Language Guide". It's utterly indispensable; those who follow the guidelines stand out to me as proper Java developers rather than self-taught cowboy hackers :)

All form and no content makes Jack a dull boy. (0)

Anonymous Coward | more than 6 years ago | (#24831351)

I hate those 400-page stream-of-consciousness dumps, so I usually try to pick up language specs. There's Gosling, Joy, Steele, and Pracha, which you can get for $27 from Amazon. My respected colleague Jack Davidson has a book out, it's probably quite good. but it looks pretty expensive. Personally I'd avoid anything whose title contains the words "thinking", "patterns", or, God Forbid, "UML". Try to get a feeling for whether the book spends most of its time (1) defining the language and giving examples of good usage, (2) evangelizing the language, or (3) giving sort of politically-correct faddish advice about usage like "don't use singletons" or the Law of Demeter. Object Oriented style adds little value in any case, it's sort of like quibbling with Van Gogh about where the best place to hang his paintings would be, once he's painted them (let's put all the blue ones together!) All form and no content.

Random suggestions (1)

LongSpleen (1040158) | more than 6 years ago | (#24831375)

  • As part of your core library study be sure to get a solid grasp on the Collections framework. It makes dealing with common data structures much easier.
  • If you don't have a specific need for it I wouldn't put Swing very high on the list. If you do need it, be sure to include some related technologies that are making it easier to deal with. Probably the most frustrating part of Swing (at least with moderately complicated UIs) is dealing with the layout. MigLayout is a modern third-party layout manager that makes the process easier. The emerging JavaFX Script stuff takes a different approach by making all the UI code declarative.
  • JPA is really nice for setting up your data access layer. The latest versions of Hibernate allow you to use JPA annotations rather than xml config files.
  • Netbeans and Eclipse are both nice but Netbeans is easier to start with. Eclipse requires some extra steps that don't feel very intuitive at first.
  • Spring is very very cool.
  • JMS is very commonly used in projects where messaging is required so I'd probably include that.

I haven't primarily been a JEE developer so others can give better advice on some of those technologies.

A really good links (1)

grodzix (1235802) | more than 6 years ago | (#24831383) [] This is official Java tutorial. [] This is official Java API. You can learn everything (or almost everything, but definitelly it will get you to know much more than you know now) about Java from this. That's the only online stuff I've seen (I mean about any language, not only Java) that's free and is as good as a very good book.

My own recommendations (4, Informative)

mccalli (323026) | more than 6 years ago | (#24831393)

Not recommending a book, just specifics of Java:
  • Threading
    Ensure your concurrency skills are up to snuff. Read about the newer (1.5+ so not that new admittedly) ways of handling concurrency in Java - a lot of older books will miss the java.util.concurrent frameworks.
  • JDBC
    Persistance frameworks are all well and good, but understand the fundamentals of how things work at the database level inside Java.
  • Spring
    Although this changed a little with the latest rev of EJB, many sites simply dumped it and went with Spring. Worth knowing.
  • Application servers
    Pick one and know one, use that to extrapolate to the rest. My own advice is to look at Tomcat, but just knowing the basic concepts behind them is a start.

There's probably a lot I've missed, but right now I'd consider looking at those.


Don't learn a language (1)

RichMan (8097) | more than 6 years ago | (#24831405)

Learn to program. Then using languages to express the programming ideas is just a mapping process. Libraries, tool kits and development environments are additional tricks in the developers bag.

Learn procedural programming.
Learn object oriented programming.
Learn declarative programming.
Learn how programs use network and system resources.

Get a task, look at the available tools, and hardware. Pick a tool set, this includes the language and complete the task.

> Basically, learn the core concepts.

You will be much more valuable and won't get left behind when the whole world taks a left turn in 6 months.

Start with this... (0)

Anonymous Coward | more than 6 years ago | (#24831415)

class myfirstjavaprog
                public static void main(String args[])
                      System.out.println("Hello World!");
...then it's all downhill with your resume.

Java Tutorials on Sun (1)

DaSH Alpha (979904) | more than 6 years ago | (#24831419) [] You really only need the JDK. I'd get "JDK 6 Update 7 with Java EE" at [] and also the javadoc distribution. Start with that and a good IDE like Netbeans or Eclipse. I'd actually recommend Netbeans although I use Eclipse myself; Netbeans should be easier to get started with and seems to be a little less quirky. Some of Sun's tutorials have code that are already Netbeans projects. Go through basics first like understanding the langauge (e.g. differences/similarities w/ languages you know) before worrying about stuff like Swing (UI), or anything J2EE-related- you'll get there eventually.

JCP (1)

benjfowler (239527) | more than 6 years ago | (#24831423)

Do a Sun Java Certified Programmer exam. As far as looking for jobs goes, it won't count for much on your CV, although it may help you get past a phone screen. It must be said though, that doing the study to pass the exam will give you a taste of the core language and give you some idea of what you want to learn next, which, by the way, isn't too difficult.

You go to Sun's website, book an exam voucher, do the study, and then book and sit the test through your local Prometric test centre.

As far as studying for it goes, there's a ton of material, including free exam test batteries on the Web.

Books (2, Informative)

afsina (1184017) | more than 6 years ago | (#24831427)

Best core java books i have read:
- Effective Java from Joshua Bloch (second edition is available)
- Java concurrency in practice
- Head first series.

After that, you can chose books depending on what you want to do. And trust me you cannot find any platform/language having more resources and tools available than java.

Frameworks Are Important (2, Informative)

InvaderXimian (609659) | more than 6 years ago | (#24831431)

I know Java; I can use it for almost everything except web development. My small amount of experience with using it in web development is that you make an object and the get/set methods, and the frameworks handle the rest. Something like Hibernate which can create get/set methods and your POJOs based on your database schema is very useful to know. Spring, Stripes, and the rest are very good as well. Knowing Java itself is the easiest part. If you actually got a job as a Java web developer and didn't know any of the frameworks, you wont be able to do anything. For those who suggested a different language than Java seem a bit biased. There is good money for knowledgeable Java programmers.

Excellent, free, java book (1)

philj (13777) | more than 6 years ago | (#24831437)

Thinking In Java [] by Bruce Eckel is available for free from his website. I recommend it as a starting point.

From a 6-year Java Developer (2, Informative)

HeaththeGreat (708430) | more than 6 years ago | (#24831439)

Eclipse RCP is growing in popularity and is built on the OSGi service framework, which is also gaining popularity on the server side. I'd highly recommend looking into Eclipse RCP. It has a vibrant open-source community that is eager for new helpers.

My research into Java books (1)

sstair (538045) | more than 6 years ago | (#24831447)

I found that the best book for a C programmer wanting to learn Java is Java in a Nutshell. It won't be good for anyone that doesn't already know C, though.

Thinking in Java, Java Essentials, and ... (0)

Anonymous Coward | more than 6 years ago | (#24831463)

Thinking in Java, Java Essentials, and a real project to get your hands dirty is all you'll need.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?