Roadmap: Becoming an Enterprise Java Developer
Spending time in a classroom learning the different facets of Java programming is interesting, but my students inevitably ask, "Where is the money to be made in Java programming?" A quick perusal of Monster.com or Dice.com will show you a current state of the employment market. The requirements may be different depending where you live, but by and large the bulk of the higher paying jobs in the Java industry are in the enterprise domain (J2EE).You like Java and you want a selection of good paying jobs, so you are on board to become a J2EE architect. But where do you start? There are so many Java technologies, which ones should you learn? In what order should you learn them? What are the dependencies? What path will give you the best understanding?
The answers to these questions are subjective, but in this article I want to share my opinion of a roadmap to follow and a listing of resources that you can use to meet each objective in becoming a strong Enterprise Java Developer. If you are already a proficient Java programmer, read through each section and make sure that you have satisfied each objective and then start working at your level. This article categorizes your skill sets into the following areas:
- Java Programmer
- Java Applied Technologies
- Java Web Technologies
- Enterprise JavaBeans
- Enterprise Architecture
Java Programmer
A Java programmer understands the basics of the syntax and semantics of the Java programming language. You must be proficient in object-oriented concepts, such as inheritance and polymorphism, as well as Java's specific notion of interfaces. You must understand Java exception handling and be able to implement your own custom exceptions.Familiarize yourself with the Abstract Window Toolkit (AWT) and how to develop applications and applets. Understand the Event Delegation Model and how Graphical User Interface (GUI) objects pass event notifications to interested parties.
Pay attention to Java's implementation of its Collection classes (universal data structures and algorithms) and its basic input/output classes (such as Streams and Readers/Writers). Conclude your Java overview with a deep understanding of multi-threaded Java programming. Be sure to not only understand how to create a thread and execute it, but also to understand synchronization and object locks.
This overview describes two eight-week courses that I taught to prepare new Java students for certification. I outline all of these topics in my latest book, Java 2 Primer Plus, along with the topics covered in the "Java Applied Technologies" and "Java Web Technologies." (This is the first, last, and only plug for my book in this article; it was based off of four courses that I architected to evolve Java programmers to Java Developers, so I mention it only because of its relevance to this discussion.)
Once you have this information under your belt, take the Sun Certified Java Programmer exam. At the end of this program, you will have several certifications, each taken as specific skills are mastered. This is the best time to take the programmer certification. The information in the test is very specific, and you may forget it later and have to refresh yourself before the test. So take the exam while it is fresh in your mind!
Java Applied Technologies
Understanding the Java programming language is your starting point, but you must do something with it to solve real-world problems. To solidify your foundation, Java provides several core technologies that you should understand and be able to apply. The key technologies that I identify are:- Swing
- JDBC
- Network Programming
- Remote Method Invocation (RMI)
- XML
Almost all enterprise applications talk to a database in the background. The method of communication is through the Java Database Connectivity API (JDBC). You need to understand the basis of the Structured Query Language (SQL) and how to use JDBC to connect to a database, execute queries, update data, remove data, etc. JDBC is so fundamental that I cannot emphasize its importance to you enough. An exhaustive reference for JDBC is the JDBC API Tutorial and Reference, Second Edition: Universal Data Access for the Java 2 Platform and a good streamlined overview can be found in Core Java 2: Volume II – Advanced Features (The latter is a good overall Java book that you might want to have on your shelf or add to your Safari virtual library.)
The mechanism for communicating between Java programs is through the java.net.Socket class. You will experience a couple iterations of network communication, but the place to start is the java.net package. Learn how to connect to a server and then how to implement your own server. Pay particular attention to receiving a connection from a client, passing that connection off to another thread for processing, and then listening for additional connections. You need to understand how to develop a high-volume multi-user server. As an example, you could write a chat server and chat client; this demonstrates this skill set nicely. Core Java 2: Volume II provides good information on both network programming as well as RMI.
Remote Method Invocation, or RMI, is the basis for Java distributed computing, and the foundation upon which J2EE builds. Although as an Enterprise Java developer you may never write RMI code directly, learning RMI serves two purposes:
- Introduces you to distributed computing
- Provides an understanding of the underlying communication infrastructure of your J2EE application server
But for your own use, you may consider looking at JDOM, which is an open-source Java-centric approach to XML manipulation. My favorite Java XML book is Brett McLaughlin's Java and XML, 2nd Edition.
After you have completed the "Java Applied Technologies" objectives, you should get your Java Certified Developer certification (see the certification section of the reference guide for more information.)
Java Web Technologies
The next step in your journey is to understand Java's Web Technologies, namely Servlets and JavaServer Pages (JSP) and how they work together. It will help you to understand the history of dynamic Web page generation from the early days of CGI scripts to the latest JSP technologies.Some books teach you JSP right out of the gate because it is easier to develop JSP files than it is to write Servlets, but I do not subscribe to this methodology. The reason is that learning JSP syntax shows you how to use a technology without properly understanding what it is doing. There are too many black boxes that your code passes through. Therefore, I strongly recommend that you become a good Servlet programmer first.
Focus on how to read information from a Web Browser, both through HTTP GETs and POSTs, and the process of building and sending a response back to the browser. Understand session management, forwarding and including requests to and from other Servlets, and how to implement Servlet Filters. Learn the lifecycle of a Servlet and the various security mechanisms that are built into the Servlet API to secure access to your Servlets. My favorite book in this arena is Jason Hunter's Java Servlet Programming, 2nd Edition.
Once you have a good understanding of Servlet technologies, then focus your attention on JSPs. Be sure to understand the following:
- JSP syntax
- JSP Scriptlets (although you will not use them in production code)
- JSP built-in tags
- Component-based JSP programming (using JavaBeans)
- Building Custom Tag Libraries
- Integrating Servlets and JSP components to build a Model-View-Controller web architecture
Now is a good time to take the Web Component Developer certification exam; it will exercise your knowledge of these technologies.
Before leaving this topic, you might want to familiarize yourself with some of the pre-built and open-source web architectures. The main one used in the industry is Jakarta Struts, so it is a great starting point. There are some good Struts books, but the one that I keep handy is Programming Jakarta Struts.
Java 2, Enterprise Edition
J2EE combines a Servlet container (in which Servlets and JSP files execute) with an Enterprise JavaBean (EJB) container and a host for various services (such as transaction management, JDBC connection pooling, and Java Messaging Service (JMS) Servers). The first focus in J2EE has to be EJB. Be sure to understand how to implement and the differences between Stateless and Stateful Session Beans, Bean Managed and Container Managed Entity Beans, and Message Driven Beans. Learn how to compile these beans, write deployment descriptors for them, and finally deploy them to an application server. My favorite book for learning EJB is Monson-Haefel's Enterprise JavaBeans, 3rd Edition.Next, turn your attention to using and configuring JMS Servers. Understand the publish-and-subscribe and point-to-point messaging models and how JMS Servers relate to their destinations (topics and queues.) Post messages to JMS destinations and create Message Driven Beans to respond to them. JMS is a fundamental technology that is applied to implementing Web Services. A book that I really like on JMS is Java Message Service, but it has been out for over two years, so you might consider the more recent Java Message Service API Tutorial and Reference: Messaging for the J2EE™ Platform.
Choosing an application server is a key to finding a good job; most J2EE jobs will require experience with one of the two market leaders: BEA's WebLogic and IBM's WebSphere. I personally do my J2EE-specific development work inside JBoss because of its ease of use, and then target my application at one of the two aforementioned servers. There is a lot of controversy around JBoss, but I think it is the best environment to learn J2EE development; you write your deployment descriptors by hand, reinforcing their underlying meaning (the important part) and then deployment is made incredibly simple (the deployment of an application is not core to your understanding of the technology, so do not complicate it at this point.)
Application Server specific books that you might want to look through include:
-
JBoss: JBoss Administration
and Development and the JBoss pay documentation (see the JBoss
Web site for more information)
-
BEA WebLogic: Sams Teach
Yourself BEA WebLogic Server 7.0 in 21 Days and J2EE
Applications and BEA WebLogic Server
- IBM WebSphere: Professional IBM WebSphere 5.0 Application Server (WROX Press) and IBM WebSphere Application Server Programming (McGraw-Hill Osbourne)
Enterprise Architecture
Understanding how to use the J2EE technologies is not enough to prepare you for your J2EE Architect Certification, you must first know how to use the technologies together effectively (design patterns) and how to articulate your designs to your peers (UML).Design patterns demonstrate solutions that have already been defined for classes, or categories, of problems; when faced with a problem it is better to see if someone has already solved the problem before solving it again. Sun's Web site is full of J2EE design patterns, as is the book Core J2EE Patterns: Best Practices and Design Strategies.
UML has become the standard Enterprise Architecture language for expressing an architecture to other architects and to your development team. UML was originally developed by Rational Software and applied through the Rational Unified Process (RUP), which was an entire software engineering model. The book Building J2EE Applications with the Rational Unified Process demonstrates how to integrate the RUP and UML diagrams with J2EE concepts.
The last thing that you need to do before taking getting your Enterprise Architect Certification is to review for this difficult exam, programming assignment, and second exam (essay-based). Prentice Hall released a study guide for this exam: Sun Certified Enterprise Architect for J2EE Study Guide to help you.
Summary
This article has outlined a roadmap that you can follow to become an Enterprise Java architect. In retrospect, the reason that Enterprise Java architects demand a high salary is because they are required to know a whole lot of information! The reading list and topics that I outlined for you could easily take you a year or more of dedicated study to accomplish. It is probably one of the most difficult positions to grow into, but it is also one of the most rewarding.I would recommend following this path and then working at whatever skill set level you happen to be in to gain experience while you learn additional skills. Before someone will hire you as an Enterprise Architect, you'll need experience in the industry, so consider this a three year goal: work in the Java industry and keep adding skills as time permits. Before you know it, you will be at the bleeding edge of enterprise Java knowledge!
It has been several years since I first published a roadmap to becoming an enterprise Java developer, so in this 2007 installment, I want to review our humble beginnings and then review the hot topics that you need to understand in today's ever evolving industry. Much of my original article is still valid, so in this installment will review and build from that base