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.
Where to start when digging into an existing J2EE codebase?
java ee
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.