• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Java Learning Hierarchy

Oyster

Member
I have had sporadic exposure to various Java technologies over the past couple of years, but I'm still unclear about the proper path for mastering techniques in a successive manner. I have some time opening up from an assignment over the next few months, so would love the input of Java pros of how to proceed.

I have about eight years of experience in programming and architecture, so am definitely not new to the topic. However, I have yet to find a cohesive demonstration of a process to properly bolster my Java skills. For example, how/where do i methodically begin exploring Java EE.

What I'm looking from you guys is a, somewhat, structured process for picking up topics, especially when some topics build on others. For example, if someone were to ask me, "How do I go on learning C# from scratch and bring myself up-to-speed with current standards?," I'd give them a roadmap as follows:
1) .NET 2.0 (ADO.NET, Generics, ASP.NET 2.0, Windows Forms, Reflection, CLR, Web Services, Windows Services, Multithreading, etc.)
2) .NET 3.0
3) .NET 3.5 (LINQ, WCF, WPF, MVC, etc.)
4) .NET 4.0 (async, await, etc.)

In the above example, I skipped WCF, WPF, MVC from the .NET 3.0 bullet because I know the technologies weren't really polished until .NET 3.5. For some of you Java guys, some of these acronyms maybe gibberish. If it is any clearer, I wish to explore all core Java topics (server side, Web, mobile, etc.).

I programmed Java in college, but then mastered .NET professionally, but now want to really expand into Java again.

So all of you Java pros, please share your approaches.

As a side note, please don't make this a C# vs. Java thread... we have enough of those going on around here.

Thanks.
 
If it is any clearer, I wish to explore all core Java topics (server side, Web, mobile, etc.).
OK, that's the clearest request I see here.

I can't give you a "structured process for picking up topics", but I can give you starting points.

First, if by Java Web you mean applets, that's dead. (Think Sliverlight dead.) Some people may still use it, but they really shouldn't.

Next, for Java EE, pick up a copy of Apache Tomcat and start playing with it. Java EE is somewhere between ASP.NET and PHP, but closer to PHP I think - not having done much ASP.NET. I don't know any particular tutorials for it, but someone else might.

Mobile + Java = Android. If you want to do anything iOS, you'll need to learn Objective C instead. Google has a standard SDK for Android, and lots of documentation there too, such as tutorials under "Training".
 
Next, for Java EE, pick up a copy of Apache Tomcat and start playing with it. Java EE is somewhere between ASP.NET and PHP, but closer to PHP I think - not having done much ASP.NET. I don't know any particular tutorials for it, but someone else might.

Eh, that hasn't really been true for a long time.

Back in the dark days, people coded entire sites in JSPs which were a mixture of your layout and Java code, very similar to PHP. Nobody does that anymore.

These days, people generally use some sort of MVC model. Your controller is written in a pure Java class. Your model is a pure Java class. Some people use JSPs as the template language for the view, but there are plenty of alternatives.
 
start with Java then move onto Java EE.

For Java you can begin with:

1. Collections
2. Generics
3. Naming Conventions
4. You'll want a build tool so I would recommend Maven
5. Learn the API (HashMap, etc...)

Write a few programs and make good use of the API. Search for best practices when your designing and writing a lot since your in the learning phase.
 
Last edited:
Next, for Java EE, pick up a copy of Apache Tomcat and start playing with it. Java EE is somewhere between ASP.NET and PHP, but closer to PHP I think - not having done much ASP.NET. I don't know any particular tutorials for it, but someone else might.

No, tomcat is just a servlet container. It is not fully compatible with Java EE. For full Java EE you need an application server like glassfish or JBoss. Or alternatively http://tomee.apache.org/ for Web profile only.

However the question is if full Java EE is needed at all. I strongly suggest to also have a look at the Spring Framework:

http://www.springframework.org/
 
If you are trying to build a web application then you probably want to understand the fundamentals of how the servlet spec works from web.xml up. You could take a lot of stuff for granted if you just read a book on Spring Web MVC and decide you know enough to start writing Java web apps using the latest and greatest framework.

If you are trying to build an event driven system then you most certainly need to understand the concurrency api and STM as well as the asynchronous I/O library. You might want to look into Akka framework and Java 8's Lamda's while you are at it.

But as Net said also, learning the basics and whatnot is also priority. Gradle and maven are really great tools as well as Jenkins (using gradle with gradle using maven) makes SDLC pretty streamlined.

Have fun with Java. It is not the Dinosaur or Leaky Faucet people make it out to be. It is getting better all the time and I wouldn't be surprised if most of the robust subsystems of the the future were built on Java 8 when Lamda's are leveraged correctly.
 
Do a GUI using model/ view controller.

Make a simple widnow with 3 panes. Have buttons, text entry and other stuff in one pane and output of differing types in the other two. Make all information transfer between the views go though the model. If you want to get fancy, you could even add in a contrller of some sort. Maybe a thread running and every minute the time gets updated in the 2 output panes using hte model as an in betteen for the contrlller (timer thread) and views (the two panes).
 
1. JavaServer Faces (like their version of webforms / mvc)
1.5 JDBC
2. JPA (orm)
3. Jax-rs (restful web services)
 
start with Java then move onto Java EE.

For Java you can begin with:

1. Collections
2. Generics
3. Naming Conventions
4. You'll want a build tool so I would recommend Maven
5. Learn the API (HashMap, etc...)

Write a few programs and make good use of the API. Search for best practices when your designing and writing a lot since your in the learning phase.

Any good book recommendations for what is listed?
 
Back
Top