Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I work for a company that produces enterprise applications to be used by schools and districts to manage all of their tests and standards data. Their existing application is written in J2EE and is very large. I personally am a seasoned PHP and Ruby = RoR developer and I have been asked to attempt to implement easily added but crucial features to an existing J2EE codebase. I am very familiar with Java SE and know the architecture of a web application well.

What I am asking for is, will this suffice for the task ahead and what tips can you give me in digging into the code base and actually efficiently adding these new features? Is there anything important I need to know before beginning and what can I expect in terms of problems and issues coming from a Java SE, PHP, RoR background?

Time isn't too much of an issue, I should have plenty of time to familiarize myself with J2EE.Please also note, syntax will not be a problem here.

share|improve this question
How big is it? Do you have time to learn it all? – user1249 Jun 12 '12 at 20:06
Edited post to answer those questions. Thanks – Jacob Krustchinsky Jun 12 '12 at 20:10
Do you have access to anybody who has worked with the codebase before? A few hours once in a while mentoring can do wonders. – user1249 Jun 12 '12 at 20:39
Sadly not a soul. I work in a very obscure environment and the old developers were all let go, leaving nobody who knew anything about one of the more important products sold by the company. – Jacob Krustchinsky Jun 12 '12 at 21:21
up vote 3 down vote accepted

Java EE is very broad. There are a lot of libraries and frameworks out there, so my suggestion would be to get to know the ones used by the application. At the very least understand the problems they are solving and how they are solving them. Some concepts will be familiar, others will take more time to understand.

Questions to ask yourself:

  • Are you using servlet engine (Tomcat) or a full enterprise server (JBoss, WebLogic)? If an enterprise server, figure out which features of the server the application is using, and which ones are being outsourced to other frameworks or libraries. At the very least, understand what a Servlet is and how they are configured and managed by the server itself. Understand what WAR (and possibly EAR) files are, and how the files in them are structured.
  • Is there a dependency injection framework such as Spring or Guice? If there is, these frameworks will likely dictate much about how the application is structured. Get to know them well.
  • How is database persistence handled? Does it use plain SQL, Hibernate (or some other JPA implementation), or something completely different? It's likely that there will be some things to learn in this area, especially if a DI framework is used.
  • Is it using plain servlets and JSPs or, is it using some other web framework? If there is a DI framework, it is likely that the web framework is configured with it. Figure out how objects (such as HTTP requests) are scoped in relation to the rest of the application.
  • If the application is not using JSPs, then it's likely using some other template engine such as Velocity or Freemarker. Even if it is using JSPs, some web frameworks have their own JSP tags and expect you to use them.

I think those are all the major points to consider when diving into a Java EE app for the first time.

share|improve this answer
You can get a good idea of which libraries the application uses by looking at the jars enclosed. Those (plus the technologies in the application server itself) will show how much you need to learn. – user1249 Jun 12 '12 at 21:42

The basics of all web related in the Java world is the Servlet API and its specification. If you do not know it, now is a very good time to learn it. For Java EE you must stay away from Servlet 3.0 (the newest) and only look at 2.5 or even 2.4.

Then write a few servlets (image generation are usually good candidates for this) and then look into how to write Java web apps. This includes JSP-pages and WAR-deployments. Get familiar with that - especially with library jars, and JSP taglibs etc. Learn how to debug them in your IDE (very important).

The full Java EE stack is perhaps 10 or 20 times larger to learn than this. At that step you can determine if you are willing to go the rest of the way.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.