Re: Need to learn J2EE and friends
nroberts wrote:
I've recently been assigned as engineer to adopt a product written in
Java that uses J2EE, EJB, and Struts. After the upcoming maintenance
release a decision to re-engineer the product has already been made.
I have tons of experience in C++ and in object oriented programming,
and in that regard Java is no challenge to me...only a slightly
different syntax and a different API. The architecture of
"enterprise" applications though is entirely new and as I get into
it...quite a bit foreign. There seems to be a rigor and logic to the
Java way that I need to learn. I did a modicum of work on dynamic web
programming with PHP way back in the day but even that appears quite
different from what I'm tasked to work on now. My primary experience
is in desktop application programming.
I went to the local instance of Barnse and Noble to find something to
help but found little of value. The most tempting offering was a
generic book on SOA but I was not sure how much help it would be and
it was rather expensive. I'm not even sure SOA would be topical since
we're not developing a "service" at all. I'm working through a
tutorial on using Eclipse with glassfish but at some point I need to
break out of the IDE and understand the generic project structure. We
appear to be using Ant for the build process... Frankly, I wasn't
sure would help me as I looked at the bookshelf. Most books just
seemed to be thick for the sake of being thick, going over things like
XML syntax basics, while I need concise, upper level treatment and
overview.
I need to get up to speed on the concepts regarding these multi-tier
web programs and how they fit in with Beans and Struts...perhaps new
technologies that would be of help as well. I need to learn the
differences between application programming and "enterprise"
programming and I also need to learn what I need to learn...because I
don't even seem to really know that either.
Where would be a good place to start?
When you say "J2EE" and "EJB", do you have any information on what versions=
of those you're working with? Also, what specific implementation are you =
using (WebLogic, JBoss, Glassfish, ...)? Or are you tasked with picking an=
implementation?
It makes a difference what version you're using. The abbreviation "J2EE" i=
s somewhat out of date, referring to an older version of the spec that is h=
arder to work with than the current version, "Java EE" (Java Enterprise Edi=
tion).
http://java.sun.com/javaee/6/docs/tutorial/doc/
(Java EE 5 is the older version. "J2EE" refers to still older versions.)
"EJB", or "Enterprise Java Beans", has changed a lot with the spec upgrade.=
There used to be two kinds, "session beans" and "entity beans". Entity b=
eans have fallen into disfavor, being replaced by the Java Persistence API =
(JPA). Entity beans were never easy to work with, but JPA is a joy. (Use =
EclipseLink or OpenJPA rather than Hibernate if you can help it. If you mu=
st use Hibernate, use it as a JPA library, not in its native mode.)
Nowadays you have session beans - stateful and stateless - and management b=
eans. They are much easier to use in Java EE than they were in J2EE. The =
old way involved a lot of fooferol around "home interface" and "remote inte=
rface" that were hard to use. Nowadays we use annotations (syntactic eleme=
nts identified by a leading "@" character such as "@Session") and things ju=
st sort of automagically happen in the application server.
The application server is the Java EE engine, such as the aforementioned We=
bLogic, JBoss or Glassfish; also Geronimo, WebSphere, what-have-you.
You really, really want to avoid the J2EE way of doing things and stick wit=
h Java EE. Any application server that doesn't support at least Java EE 5 =
is going to be hard to work with and likely no longer supported (except may=
be at significant expense) by the vendor. The development and maintenance =
costs of these older versions will outweigh conversion costs to a newer pla=
tform.
Download and install Glassfish - it's lightweight enough to run on any dece=
nt developer workstation (dual-core or better, 2 GB RAM or better, couple o=
f hundred megs of disk or better).
http://glassfish.java.net/
Use it to work through at least some of the aforementioned tutorial.
http://java.sun.com/javaee/6/docs/tutorial/doc/
--
Lew