I would like to learn Java EE 6. (second or third attempt)
For months, I have been messing around--looking at various online tutorials and so forth, anything I could get my hands on.
I've come to several conclusions as to why I can't seem to learn this (I have been able to learn about 3 other object-oriented languages)
1. There are so many moving parts. I hear this is better than before, but since this is a newbie forum--
2. Each part of the Spec has too many choices, resulting in not only paralysis by analysis. For every piece of the EE spec, there seem to be about 5 legitimate frameworks that I could use.
3. Each part of the Spec tends to depend on other parts--ie JSF using EJBs and in turn using JPA.
3. Tutorials are very hard to follow for a newbie b/c each tutorial uses its own combination of the multiple frameworks in place. For example, I wanted to learn some EJB, but in the course of the tutorial things are going fine until a tutorial will
say, we'll use Spring for an MVC framework or something like that. Or things will look good only to find out that they are using glassfish and not jboss, or vice versa. Then I realize that we need to use Apache CXF for my a job at work,
only to find that the tutorial uses Jersey. So I'm finding it pretty tough to find tutorials that will use the frameworks for my situation. Contrast this with .NET or other closed approaches, and the IDE is what you get. I sometimes debate with myself,
do I need to take a detour and learn JSF when I know we'll be using HTML and something like Jquery? B/c many tutorials keep referencing JSF and for me to follow along I feel like I need to learn it.
4. Maven--the beast. Honestly most of the other languages you just hit build and run, and I know all the hard stuff is happening under the covers, but Java appears to really want to let you know what every little thing is doing.
I do not know why, but many projects simply do not build...either a repo is down, or that version of a plugin is no longer compatible, or some what I'd term odd Eclipse errors, and a mvn clean will work although I am not sure why.
I've realized that if you don't take a detour and learn maven, tutorials aren't going to run.
5. Eclipse--just all kinds of JAVAHL errors and projects not refreshing or becoming out of sync....just not sure if my workflow is all wrong, but it gives me the impression that Eclipse is more finicky than other IDEs that I've used in the past.
6. I have found myself wondering, quite often, why the Java EE approach is better in that I know in other languages I would be able to implement the same project much faster. Do these other languages or more integrated ones such as Ruby
or .NET hide so much of the underlying complexity from you or are these more amateur approaches compared to the Java EE way?
All that whining aside, I do like the open source aspect, and there are just too many java-only projects that in my mind are 'must haves'. The community behind these must have projects are just too large and they've been developing them for 10 years,
so I'm certainly not going to find equivalents in other languages.
So moving forward, I'm wondering if:
1. There is a hidden gem of a book that uses eclipse since everywhere I've been it's the standard over netbeans it seems by a 10:1 factor (all figs approximate). I am not a fan of the command line roll your own 'javac 'helloworld.java' tutorials
since I'm skewed towards real world usage, and eclipse is the IDE that I'm going to be using.
2. Is there a book that sticks to jboss and their stack? I have tried for about 12 hours to build alot of the mastertheboss tutorials (maybe they are actually not affiliated), but unfortunately the tutorials already assume that you know what a @producer is and so forth, in their most basic one.
It seems like Jboss is the champion these days.
3. Should I just conquer and divide--that is, do nothing but learn JSF, forget about everything else...and then keep going to EJB....then JPA....then JAX-RS....then Soap Services....MDBs, ESBs, etc.
4. Any other suggestions as to how you guys became literate in Java EE? I assume that there must be a big payoff at the end for the investment (non monetary).
My problem is that I can not understand the Oracle official docs. Official docs tend to be too detailed or obscure for me.
In the past what has worked for me are things like a Deitel book or a Cay Horstman book, something that basically does not assume any prior knowledge and explains lines of code, and shows you the entire code rather than snippets which
at least for me make it difficult to follow along. Should I keep hunting for a book, or is it more of a try ten different tutorials, and each time I may pick up something new from each, and by the tenth one together I may have a complete enough
picture to start learning on my own?
JEE is a big beast. Trying to learn it all at once is too much, so you should indeed focus on individual pieces. The thing to note is that you will not need all of its pieces, so you should start with those that are most likely to be of use to you. The pieces are independent of one another, though - maybe it's the examples you're looking at that mix them. You're right that the Oracle docs can be confusing, I think trying to find tutorials for each constituent piece is a better approach
Servlets/JSPs are the building blocks for web apps, so you will very likely want to learn those. Most web app developers use some framework on top of that - JSF is the JEE-blessed choice, but many people shun it for others, so I'd only get into JSF if you KNOW you're going to need it in particular.
Most apps will access DBs, JPA knowledge will come in handy. EJBs -which make use of JPA- are less commonly used - again, I wouldn't get into that until/unless you know you'll need that.
WS - yes, but start with JAX-RS, and leave JAX-WS until, again, you suspect that will need SOAP WS. SOAP has fallen out of favor for a lot of usage scenarios, and REST is used instead these days.
Can't speak to Eclipse and Maven - don't use the former, but you're right that it is the de facto standard. And I severely dislike Maven, so I keep it at arm's length wherever possible; Ant is my tool of choice.