tags:

views:

217

answers:

4

I'm relatively new to programming, though I know the basics of Java. (I've passed the SCJP exam, so that's what I mean by "basics.")

I want to learn J2EE, with a focus on back-end web development, and I'm becoming disoriented by the various pieces of software involved. I've been using NetBeans and MySQL as my IDE and database. What other types of things will I need, and what combinations would you recommend for a beginner?

Some of the things I've seen referenced are Tomcat, Glassfish, Sun Java System Application Server, and Ant. I'm confused as to what the specific function of these things are, to what degree they may overlap in purpose, and what combination would seem reasonable for a beginner.

Also, am I missing any important categories? I'm willing to defer things like Spring, Hibernate, and Struts for a bit, while I learn the basics of J2EE.

Edit: No one has mentioned the Sun Java System Application server, which the J2EE tutorials mention as necessary. Does it do the same thing as Tomcat, or does it provide something extra? Also if someone chooses to give a few clear sentences which explain the purpose of these various tools, I'll accept that answer.

A: 

There are more web application frameworks than revolutionary web applications. Just pick one and you'll be fine. When you're more experienced, you will be able to make good choices for yourself. You won't know if you don't just start coding and deploying.

lbp
+1  A: 

Hi,

I recommend you begin with Java 6 + tomcat 6 + ant + Struts (1.x, 2.x) + (MySQL or Derby)

Once you are confident I would jump to Spring, Hibernate, Maven, LDAP...

Glassfish, Bea WebLogic (now Oracle), Geronimo, WebSphere, etc, are (almost) the same.

Regards.

ATorras
I reccomend against using struts... you need to learn the basics first. Start with basic jsp.
Jacob
Why jump from ant to maven? Why not just add ivy to maven?
@Jacob: You are right :)@Lutz: I *recommended* maven because I have dealt with (and left) and it's more widespread than Ivy.
ATorras
+1  A: 

Use Netbeans to create your first Apps. It is really nice for beginners. After a while try Spring Source Tool Suite to get a view behind the Spring Scenary. They are doing crazy stuff. Also they provide a lot of great Tutorials.

bastianneu
What is this, a spring advertisingforum? (:
Jacob
sry...but i am really suprised how they solve my problems with Spring in every single update and add new cool features...damm i am a fanboy :-(
bastianneu
+2  A: 

There are many different technologies and software involved, so here hopefully a simplification for you:

Editors:

  • Netbeans (probably the easiest to learn on)
  • IntelliJ - VERY good and polished, but costs money
  • Eclipse - free, but may seem complicated until you get used to it. Good to know how to use in the long run, since some of the lastest-and-greatest plug-ins are available for it (editors and dev. tools)

Application servers / web servers:

  • Tomcat - free basic Java EE web server, but doesn't provide all of the services that full "application servers" provide (I think it doesn't include JMS messaging, may not include JPA, etc...)
  • JBoss - application server, uses Tomcat behind the scenes
  • Websphere - application server
  • Glassfish - a free open-source application server. Used to be called Sun Application Server.

Build tools (for building / packaging your code)

  • Ant - definitely good
  • Maven - Maven seems popular, and I've heard it builds on the functionality that Ant offers

I've been using JBoss 5 which seems to work well, but is a bit of a memory hog (an understatement), in addition to JSF and RichFaces. RichFaces is great for adding Ajax functionality to your sites, and you can do a lot of custom Ajax with it also. JPA is an interesting technology but you may want to be wary of it; it can be significantly more difficult to troubleshoot than with a straight-forward database access technology like JDBC.

Best of luck!

Jon
Thanks, this is useful. That Sun Application Server is now Glassfish is a useful piece of hard-to-find information, among others.
FarmBoy