Hi folks I have just passed SCJA part 1 today. I scored 80% for the exam. I would like to thank java ranch site for providing j2ee information, especially John Wetherbie, Skip Code, and Thompson Dan for their valuable notes and discussions. These discussions greatly assist and guide me to select the corrects answers. I also thanks Java ranch for empowering my java knowlege and assisting me to pass SCJP last month.
Here is my section analysis Concept 83% Common Architectures50% Legacy Connectivy80% EJB100% EJB Container Model100% Protocols66% Applicability of J2EE100% Design Patterns80% Messaging66% Internationalization50% Security100%
Let me mention about the SCJA exam when the exam info still caches in my memory. The first five questions are about design patterns including proxy, iterator, observer, faccade. There are two questions about internalization. About 10 questions about ejb including bean life cycle, transaction isolation, security. There is no question specifically to ejb API. One question about applet security. There are many questions about common architecture and ejb application. Sun gives a lengthy scenerio and asks you to pick the appropriate ones. At least 3 questions have up to 7 answer options. It is really time comsuming to read scenerio and analyze the answer options, especially when the options are not easy to pick, and I have go through the process of elimination. When I see these lengthy questions, I mark them to answer later. First, because these questions are time comsuming. Second, other short questions may refresh my overall memory about j2ee and provide info to select the corrects answers (or eliminate the wrong answers). There are about 4 questions about UML where a exhibiting diagram is given and asking for the association, generalization, mupliplicity. About 3 questions about protocols such as communicate between emulator applet to terminal server through firewall (only port number 80 and 433 are allowed through fire wall). I remember there are 2 answer options about DNA load balancing ( I don't know how DNA fit to J2EE architect. I know J2EE architect have many advanges over DNA (Microsoft Distributed interNetwork Architect). About 3 questions about scalability, manability,etc... I would recomend to read Mr. Wetherbie note prior taking the exam. Thanks again to all the helps of javaranch members. Joey Tran
Common Architectures Scalability Scalability is the ability to economically support the required quality of service as the load increases. Two types: Vertical and Horizontal Vertical: Achieved by adding capacity (memory, CPUs, etc.) to existing servers. Requires few to no changes to the architecture of a system. Increases: Capacity, Manageability Decreases: Reliability, Availability (single failure is more likely to lead to system failure) Vertical scalability is usually cheaper than horizontal scalability. J2EE supports vertical scaling because of automatic lifecycle management. Adding more capacity to a server allows it to manage more components (EJBs, etc.). Horizontal: Achieved by adding servers to the system. Increases the complexity of the system architecture. Increases: Reliability, Availability, Capacity, Performance (depends on load balancing), Flexibility Decreases: Manageability (more elements in the physical architecture) J2EE supports horiz. scaling because the container and server handle clustering and load-balancing. Availability and reliability are obtained through scalability. Scalability affects capacity. The more scalable the system is the more capacity it can support. This must be traded-off against the complexity & manageability costs. Maintainability How related is this to Flexibility? Flexibility is the ability to change the architecture to meet new requirements in a cost-efficient manner. A flexible system should be more maintainable in the face of changes to the environment and/or to the application itself. Flexibility improves: Availability, Reliability, Scalability Flexibility slightly decreases: Performance, Manageability Flexibility is achieved via code that can be distributed across servers with load balancing that prevents one system from being overburdened. The use of a multi-tier architecture also helps achieve flexibility. Reliability The ability to ensure the integrity and consistency of the application and all of its transactions. You increase reliability through the use of horizontal scalability, i.e., by adding more servers. This only works up to a certain point, though. When you increase reliability you increase availability. Availability Availability is about assuring that services are available to the required number of users for the required proportion of time.
Extensibility The ability to modify or add functionality without impacting the existing functionality. The key to an extensible design is to make an effective OO design. Extensibility pays the most towards the font end of a system. Some rough guidelines: More than 25 top-level classes will lead to problems Every use case should be able to be implemented using domain model methods J2EE supports extensibility because it is component-based and allows you to separate the roles of an app. JSPs can handle presentation. Servlets can handle routing, and EJBs can handle business logic. Performance Architectural performance is concerned with creating an architecture that forces end-to-end performance. The purpose of an architecture that ensures performance is to control expensive calls and to identify bottlenecks. If you know the boundaries of the various parts of the system, the technologies, and the capabilities of the technologies you can do a good job of controlling performance. You want to minimize the number of network calls your distributed app makes - make a few "large" calls that get a lot of data vs. lots of calls that get small amounts of data. Try to minimize process-to-process calls because they are expensive. Use resource pooling to reduce the number of expensive resources that need to be created like network connections, database connections, etc.
Manageability Manageability refers to the ability to manage a system to ensure the health of the system. A single tier or monolithic app would be more manageable from a management perspective than a multi-tier system but this must be weighed against the possibility of a change rippling through a monolithic app. A simple architecture may not be as flexible or available as a more complex system but the amount of effort required to keep the system up & functioning will be less. A component-based architecture like J2EE offsets some of the manageability problems caused by a multi-tier system. Security Security ensures that info is neither modified nor disclosed except in accordance with the security policy. Tradeoffs: personal privacy, ease of use, and expense. A highly secure system is: More costly Harder to define and develop Requires more watchdog activities Principles of Security: Identity - The user is correctly ID'd thru an authentication mechanism Authority - The user can perform only allowed activities Integrity - Data can only be modified in allowed ways Privacy - Data is disclosed to authorized entities in authorized ways Auditability - The system maintains logs of actions taken for later analysis
Congrats and thanks for the break up of the questions based on the topics. I wish more people who pass the exam give us the breakup of questions so that we can concentrate more on the topics which have the maximum questions.
Thank you very much. Sorry for not responding to your messages promptly. I just took a weekend break to visit San Franscico. Bidyut, as far as I know there is not coding for part II. you need to draw class, sequence, and component diagrams. You should get familiar with UML tools such as rational rose, together. You won't know part II grade till you pass part III. There are many discussions about part II and III at http://groups.yahoo.com/group/scea_j2ee. Thanks Joey Tran