Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Need to learn J2EE and friends (http://www.velocityreviews.com/forums/t753651-need-to-learn-j2ee-and-friends.html)

nroberts 09-06-2011 01:23 AM

Need to learn J2EE and friends
 
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?

Lew 09-06-2011 01:48 AM

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 versionsof those you're working with? Also, what specific implementation are you using (WebLogic, JBoss, Glassfish, ...)? Or are you tasked with picking animplementation?

It makes a difference what version you're using. The abbreviation "J2EE" is somewhat out of date, referring to an older version of the spec that is harder to work with than the current version, "Java EE" (Java Enterprise Edition).

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 beans 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 must use Hibernate, use it as a JPA library, not in its native mode.)

Nowadays you have session beans - stateful and stateless - and management beans. 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 interface" that were hard to use. Nowadays we use annotations (syntactic elements identified by a leading "@" character such as "@Session") and things just sort of automagically happen in the application server.

The application server is the Java EE engine, such as the aforementioned WebLogic, JBoss or Glassfish; also Geronimo, WebSphere, what-have-you.

You really, really want to avoid the J2EE way of doing things and stick with 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 maybe at significant expense) by the vendor. The development and maintenance costs of these older versions will outweigh conversion costs to a newer platform.

Download and install Glassfish - it's lightweight enough to run on any decent developer workstation (dual-core or better, 2 GB RAM or better, couple of 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

Arne Vajh°j 09-06-2011 01:49 AM

Re: Need to learn J2EE and friends
 
On 9/5/2011 9:23 PM, 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?


The Java EE tutorial:

http://java.sun.com/javaee/6/docs/tutorial/doc/
http://java.sun.com/javaee/5/docs/tutorial/doc/
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/

(study the newest and the version you will be using)

Arne



markspace 09-06-2011 01:58 AM

Re: Need to learn J2EE and friends
 
I've heard what you are going to need to do described as "drinking from
the fire hose." I.e., information is going to come at you very fast at
high pressure and there's going to be way more than you can absorb.

So don't worry if nothing makes sense at first. It's going to be quite
a while before you feel that you're even off training wheels.

As for where to start, you can try here:

<http://download.oracle.com/javaee/6/tutorial/doc/bnblr.html>

For more information, we'll need to know specifically which
specifications you are using. Enterprise web programming is a highly
competitive field for vendors, and the specifications tend to evolve
rapidly.

We'll need to know what version of Glassfish you use, what the
production version is if different, what libraries you use (e.g.
"Struts") and what the version of each is. It's a big deal just to nail
down what your environment is, so this should be a productive first
step. Be aware that Java Enterprise Edition can comprise several
various individual specifications, each with their own set of Jar
files/libraries, so just "JEE" doesn't really describe what you are
doing or what the actual target environment is.





Arved Sandstrom 09-06-2011 09:20 AM

Re: Need to learn J2EE and friends
 
On 11-09-05 10:23 PM, 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?


In addition to what the others said (basically, start working through
the Java EE tutorial), I'll add a few notes:

1. As you begin teasing apart what a J2EE/Java EE application does, do
keep in mind that at their core these API families are 95 percent about
writing web apps. Plain and simple. Whether it's the Struts framework
building upon the Servlet API in the web tier, or session beans in the
services layer that encapsulate your business logic and provide
scalability and lifecycle management, it's all about scalable and
distributed servicing of requests.

2. If you understand the Servlet API in the web tier, and session beans
and message-driven beans in the business layer, those are the real guts
of a J2EE/Java EE app. Almost everything else builds on that. I hope
fervently that you are not afflicted with a J2EE 1.3 or 1.4 application
that makes use of EJB2.x enterprise (session/entity) beans.

3. Name-dropping: Struts, like Java Server Faces (JSF), or Wicket, or
Tapestry, etc, is a web-tier framework that aims to simplify processing
of requests. A fairly common characteristic is support of MVC. I hope
that you are using Struts 2, and not Struts 1. Technologies like JSP and
Facelets are _view_ technologies, and are used by these web frameworks.

4. Talking to databases: JPA (Java Persistence API) is an orthogonal API
that is equally applicable to (desktop) Java, namely Java SE, or
"enterprise" Java, namely Java EE. It's an API for object relational
mapping, and combines lessons learned from ORMs like JDO, Hibernate,
Toplink etc. If the app that you are confronted with does not use it,
then I expect that either it's old and uses EJB 2.x entity beans, or it
uses native ORM APIs for something like Hibernate or TopLink, or it uses
straight JDBC.

5. More name-dropping: you may hear Spring mentioned. This is an entire
family of frameworks. The core of Spring is Java object configuration
and management through an "inversion of control" (IoC) container, using
dependency lookup and injection. There are many other Spring
frameworks/libraries for web MVC, transactions, security, web services etc.

There was a decent rationale for using Spring IoC back in the day, like
in the earlier versions (1.x and 2.0) By the time Spring 2.5 came out
what was available in Java EE (Java EE 5) was already caught up, and now
with Java EE 6, Spring is basically pointless. *My* opinion. If anyone
suggests Spring to you as "the way to go" ask them why they think so,
and if it has to do with making up for some ancient version of J2EE then
recommend an upgrade to Java EE 6 instead.

6. "Enterprise" in "J2EE" or "Java EE" or "Enterprise Java" means "web".
Official documentation may not put it quite so baldly, but it's
basically all about handling HTTP/HTTPS requests from web browsers, or
SOAP requests coming in over HTTP/HTTPS for a Java web service.

The other main non-negligible input mechanism is messaging (JMS, or Java
Message Service).

There are obviously some other aspects to "enterprise", like being able
to talk to other systems like an EIS (you'll see the Connector
architecture discussed in the tutorial). But fundamentally it's about
being a web app.

7. SOA: nobody in your shop may be tossing the term around right now,
but it doesn't hurt to be aware of basic SOA early on. Make yourself a
SOA resource and it will help you. At this stage of the game you will
actually improve the application overall by ensuring that it is modular,
and that the building blocks in the business tier are actually small-s
services in the SOA sense, without actually ever worrying about web
service endpoints or ESB or workflow.

Questions: I assume you meant "adapt", not "adopt", in keeping with the
"re-engineer" somewhat later on. Any information you can supply about
the nature of the requested adaptations, and leeway that you have for
suggesting improvements, and timelines, would help us.

For my part I've been doing J2EE/Java EE, with the odd vacation, since
the year 2000. It's my bread and butter. Others here have similar
experience levels. So I suspect we can help.

AHS

nroberts 09-06-2011 03:06 PM

Re: Need to learn J2EE and friends
 
On Sep 6, 2:20*am, Arved Sandstrom <asandstrom3min...@eastlink.ca>
wrote:

> Questions: I assume you meant "adapt", not "adopt", in keeping with the
> "re-engineer" somewhat later on. Any information you can supply about
> the nature of the requested adaptations, and leeway that you have for
> suggesting improvements, and timelines, would help us.


First off, thanks to everyone that responded. I'm trying to digest.
Lots of things I need to figure out to answer some of the questions
posed. I might not get back today, but thanks for replying and I'll
come back with responses soon.

As to this one, I meant "adopt" as in the 'provide this orphan a home'
sense. The previous engineer retired a couple months before I arrived
and its been without one since.

I believe I'll have about 6 weeks before having to do anything to the
product. I think I can do those changes without having to know the
architecture and theories too much since they're all business level
changes...I think. I have 6 weeks because that's what it'll take for
the analyst or whoever to get requirements to me. After that they
want to re-engineer the entire architecture so I'd hope I have some
input there. From what I can tell it could use some of my design
input but I also need to understand "enterprise" architectures in
general.

I do have "Core J2EE Patterns, 2nd Ed." and "Core JavaServer Faces"
from the business's bookshelf. I started with the former but since it
was Labor Day weekend I spent most my time drunk or swimming in the
ocean...so I haven't gotten far :P

nroberts 09-06-2011 04:05 PM

Re: Need to learn J2EE and friends
 
On Sep 5, 6:48*pm, Lew <lewbl...@gmail.com> wrote:
> nroberts wrote:


> > 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?
>


Looks like the current version is JBoss 4.0 - looks to me like this is
J2EE 1.4? I may have the ability to change this in the future but
this is what the current view is.


> Nowadays you have session beans - stateful and stateless - and managementbeans. *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 interface" that were hard to use. *Nowadays we use annotations (syntactic elements identified by a leading "@" character such as "@Session") and things just sort of automagically happen in the application server.


I've seen the '@' element in a tutorial I'm working through:
http://programming.manessinger.com/t...ee-6-tutorial/

In the code I see a lot of classes called 'XxxHome' that inherit from
javax.ejb.EJBHome. No use of '@'. So I gather I need to learn the
hard way too...

> Download and install Glassfish - it's lightweight enough to run on any decent developer workstation (dual-core or better, 2 GB RAM or better, coupleof hundred megs of disk or better).http://glassfish.java.net/


Got it installed both from the EE Jdk and with Eclipse as some sort of
package eclipse thing (eclipse wasn't able to restart the glassfish
domain when it wasn't the integrated version).

Lew 09-06-2011 10:03 PM

Re: Need to learn J2EE and friends
 
nroberts wrote:
> Lew wrote:
>> When you say "J2EE" and "EJB", do you have any information on what versions of those you're working with? *Also, what specific implementation areyou using (WebLogic, JBoss, Glassfish, ...)? *Or are you tasked with picking an implementation?

>
> Looks like the current version is JBoss 4.0 - looks to me like this is


Current version of the project, you mean? JBoss itself has more current versions, up to v. 7.

> J2EE 1.4? I may have the ability to change this in the future but
> this is what the current view is.


I suggest you change this in the present. It will save your bosses time and money, as has already been mentioned upthread. Bear in mind that Java EE5 is already over five years old, and 1.4 came out in 2003. The differences are significant. You will really, really want to push back on this.

>> Nowadays you have session beans - stateful and stateless - and management beans. *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 interface" that were hard to use. *Nowadays we use annotations (syntactic elements identified by a leading "@" character such as "@Session") and things just sort of automagically happen in the application server.

>
> I've seen the '@' element in a tutorial I'm working through:
> http://programming.manessinger.com/t...ee-6-tutorial/


This is the standard notation for annotations, part of Java for quite a while now.

> In the code I see a lot of classes called 'XxxHome' that inherit from
> javax.ejb.EJBHome. No use of '@'. So I gather I need to learn the
> hard way too...


You need to upgrade the project. It will cost your bosses too much to staywith the old way.

>> Download and install Glassfish - it's lightweight enough to run on any decent developer workstation (dual-core or better, 2 GB RAM or better, couple of hundred megs of disk or better).http://glassfish.java.net/

>
> Got it installed both from the EE Jdk and with Eclipse as some sort of
> package eclipse thing (eclipse wasn't able to restart the glassfish
> domain when it wasn't the integrated version).


But since you mention JBoss, you'd probably best stick with that.

Eclipse will plug into any major app server, bundled or not. It's in the documentation somewhere.

--
Lew

Arne Vajh°j 09-06-2011 11:01 PM

Re: Need to learn J2EE and friends
 
On 9/6/2011 5:20 AM, Arved Sandstrom wrote:
> 1. As you begin teasing apart what a J2EE/Java EE application does, do
> keep in mind that at their core these API families are 95 percent about
> writing web apps. Plain and simple. Whether it's the Struts framework
> building upon the Servlet API in the web tier, or session beans in the
> services layer that encapsulate your business logic and provide
> scalability and lifecycle management, it's all about scalable and
> distributed servicing of requests.


> 6. "Enterprise" in "J2EE" or "Java EE" or "Enterprise Java" means "web".
> Official documentation may not put it quite so baldly, but it's
> basically all about handling HTTP/HTTPS requests from web browsers, or
> SOAP requests coming in over HTTP/HTTPS for a Java web service.
>
> The other main non-negligible input mechanism is messaging (JMS, or Java
> Message Service).
>
> There are obviously some other aspects to "enterprise", like being able
> to talk to other systems like an EIS (you'll see the Connector
> architecture discussed in the tutorial). But fundamentally it's about
> being a web app.


I would say that about 50% of Java EE is by nature web oriented, but
>80% of Java EE apps have a web interface (I am not counting desktop

apps using SOAP/HTTP as being web here - if we do it would be >95%).

It is perfectly valid to write desktop apps in Java (using Java/IIOP or
SOAP/HTTP) or .NET (using SOAP/HTTP). It is just relative rare out in
the real world (even though I actually know a lot of examples, but
I do not expect that to be representative of the world).

Arne


Arne Vajh°j 09-06-2011 11:06 PM

Re: Need to learn J2EE and friends
 
On 9/6/2011 11:06 AM, nroberts wrote:
> On Sep 6, 2:20 am, Arved Sandstrom<asandstrom3min...@eastlink.ca>
> wrote:
>> Questions: I assume you meant "adapt", not "adopt", in keeping with the
>> "re-engineer" somewhat later on. Any information you can supply about
>> the nature of the requested adaptations, and leeway that you have for
>> suggesting improvements, and timelines, would help us.

>
> First off, thanks to everyone that responded. I'm trying to digest.
> Lots of things I need to figure out to answer some of the questions
> posed. I might not get back today, but thanks for replying and I'll
> come back with responses soon.
>
> As to this one, I meant "adopt" as in the 'provide this orphan a home'
> sense. The previous engineer retired a couple months before I arrived
> and its been without one since.
>
> I believe I'll have about 6 weeks before having to do anything to the
> product. I think I can do those changes without having to know the
> architecture and theories too much since they're all business level
> changes...I think. I have 6 weeks because that's what it'll take for
> the analyst or whoever to get requirements to me.


Java EE (once known as J2EE) is huge. You will not be able to
learn all of it in 6 weeks - that will require 6 years.

But if the code, the build process and the deployment process
is well documented, then you should be able to make business logic
related changes, rebuild and redeploy.


> I do have "Core J2EE Patterns, 2nd Ed." and "Core JavaServer Faces"
> from the business's bookshelf.


Core J2EE Patterns is old.

Core JSF is good if you will be using JSF - otherwise it is
irrelevant (and there are a ton of Java web framework out
there).

Arne



All times are GMT. The time now is 03:24 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.