How to Successfully Migrate to Java

  Martin Schedlbauer is President of Technology Resource Group, Inc. (Maynard, MA) a full-service IT training organization committed to helping companies successfully adopt new technologies.
He can be contacted at [email protected].

David Udin is a Senior Technologist at Technology Resource Group, Inc. He can be contacted at [email protected].

JAVA HAS RAPIDLY emerged as an important tool for the development of cross-platform, distributed applications. While Java has been primarily associated with the Web, it is a much broader technology with applications far beyond the Internet. To take advantage of the capabilities of Java and its wide range of application programming services, an organization must enhance the skill base of its workforce in several critical areas, among them object-oriented programming, interactive and event-driven application development, distributed (client/server) systems architecture, and coming up rapidly, design and use of components (beans) for Java’s component architecture, JavaBeans.

To create an effective and successful migration strategy for its development and project management staff, a company must consider several factors. These factors are discussed in detail in this article.

Each group of potential Java users will likely need a different migration strategy. While one group, such as software developers, may need in-depth knowledge of the Java programming facilities, another group, such as project managers, need only a superficial understanding of the language features but a strong understanding of the impact that the use of Java has on a project. The audience for a migration effort can be broken into five distinct groups:

  • Software Developers
  • Web Masters
  • Software Architects
  • Project Managers
  • Business Analysts
This report will closely examine how each group can successfully migrate to Java.

The technical background that a person migrating to Java brings to the table has a significant impact on the training approach to be taken. For example, developers that have experience in C++ or another object-oriented language tend to understand Java much faster than those migrating from traditional languages, such as COBOL. Similarly, the event-driven nature of the Java user interface packages AWT and Swing are easier to comprehend if one has exposure to event-driven GUI development, such as with Visual Basic or PowerBuilder. Finally, Java is an object-oriented language that requires a solid understanding of object technology to be used effectively.

Overall, the following dimensions impact any migration strategy to Java:
  • Language background: 4GL (Visual Basic, PowerBuilder), C++, COBOL
  • GUI development experience
  • Distributed system development, including client/server development
  • Object-oriented analysis & design
Java has several roles in distributed application development: Web-based applets, remote business objects, stand-alone client/server applications, and components (beans), each of which greatly influences how a migration strategy to Java must be planned. Commonly, Java can be used to develop:
  • Intranet or Internet client services in the form of applets
  • Server objects to provide shared business services (Servlets)
  • Component-based development (JavaBeans)
  • Stand-alone applications
The environment in which Java will be deployed also influences the migration strategy, particularly if legacy systems must be integrated. For example, a mainframe application may need to be accessed through an object broker, such as CORBA.
We have identified the following company context variables that can sway the direction and scope of any migration strategy to Java:
  • Legacy system integration
  • Existing database management systems
  • Security requirements
  • Management and operations strategies
Migration to Java is possible with a variety of approaches, each with its benefits and drawbacks:
  • Instructor-led training
  • Web-based or computer-based courses
  • Mentoring
  • Self-study
The remainder of this article will address how to evaluate the current skills of a development team and how to design and implement an effective migration strategy for the development team that incorporates an appropriate mix of training, self-education, and mentoring.

What do you want to train your staff to do? Build large-scale platform-independent distributed applications? Replace Visual Basic front ends in client-server applications? Replace CGI scripts with Java Servlets? Spice up a Web page with singing and dancing applets? Java has a role in all of these, but the training emphasis ranges from learning component assembly tools (bean assemblers) to the Java language and object-oriented development.

Your initial training goal should be to understand the new possibilities provided by Java and its family of packages. This requires an overview of the language and context, explaining the role it can play in network clients and servers, in embedded processing, on portability, in interfacing to legacy databases, and on component-based development. This training should be directed to system architects and IT managers. Because of the very broad subject area and the wide range of potential emphasis, such material is best delivered by instructor-led training. This allows maximum flexibility in adapting to your organization’s background and needs.

For the developer—programmer, architect, and even project manager—the most critical success factor for anything but the simplest application is understanding object-oriented and component-based programming. The programmer must understand programming with classes; the architect, object-oriented analysis and design; the business analyst, use case analysis; and the manager, evaluating and measuring progress in an object-oriented development project. One of the critical lessons learned from experience in adopting C++ is that learning the language is not the same as learning how to do object-oriented development. Java has many advantages over C++ in terms of its accessibility to the novice, but that will only reduce the time to learn the language—only part of the time required to learn the paradigm.

If a company’s staff has experience with object-oriented programming, learning the Java language is relatively straightforward, but Java adds something to the mix: learning the ins and outs of its many packages. Java has powerful support for interactive and event-driven programming, multi-threaded applications, distributed applications, component architecture, database access, to name a few. Again, if one is coming from a background with experience in these areas, but using another language such as C++, learning a new set of interfaces is relatively straightforward. For developers with a related technological background in other programming languages, Web-based or computer-based training or self-training may suffice.

A background in Visual Basic is helpful if your goal is to adopt Java’s event-driven component architecture—JavaBeans. C++ programmers may require extra training in this development paradigm. Furthermore, in our experience, there are many C++ programmers out there who have mainly learned to use C++ as a “better C” and lack a fundamental understanding of object-oriented development.

If one is trying to learn to write interactive, multi-threaded, Web-based applications at the same time one is learning Java and its packages, take great care not to multiply the risks in a major development project. As a rule, no project should try to adopt more than one new technology, and a “Java project” can be deceptive—two or three new technologies can sneak in under the cover of learning a new language.

Evaluation of your current situation is thus more complicated than just language experience. Evaluate the depth of experience in object-oriented programming, in interactive and event-driven applications, and in distributed applications. Pay special attention to project experience as opposed to simply having “taken a course” somewhere. With little project experience under your belt, a combination of preliminary instructor-led training and mentoring on pilot projects is the best combination. Developers who participate in the pilot projects can act as mentors in subsequent projects, with new developers requiring just preliminary classroom training.

Where migrating to Java includes migrating to object-oriented development, or where the contemplated projects use significant new technology, managers as well as developers need to be trained. Managing an object-oriented project requires an understanding of at least the requirements definition aspect of object-oriented analysis, an understanding of iterative development, and a different set of progress measures and milestone evaluation metrics.

Staffing for object-oriented development requires software architects and class designers to acquire a thorough grounding in object-oriented analysis and design as well as the Java language and packages. Again, a simple language course covers only a fraction of the material.

Architects must understand a new application organization and a long list of issues: Web architecture and its architecture patterns, security of network transactions, and database integration.

For an experienced object-oriented developer with project experience in the kind of development you wish to undertake in Java, the simplest and most direct approach is often to use Web-based or computer-based training. Such a developer knows exactly what he needs to do; he is primarily interested in a quick overview of language and library features and pointers to where to find the details. Because of the very wide range of potential material, however, instructor-led training has the advantage that the instructor can adapt the material to the specific interests of the audience.

Learning to assemble applications out of beans with a bean editor and interface designer requires training in the principles—most easily acquired in a short period of instructor-led training—followed by extensively familiarizing oneself with the available components. This can be found in various repositories and vendor home pages around the Web.

For one who is experienced in the technology area, whether it is object-oriented programming, interactive and event-driven application development, client-server architecture, or component-based development, the best medium is one that quickly imparts an overview of the newly-available means to familiar ends. For this person, self-directed learning: Web-based, computer-based, book-based (remember those?), or a short, focused, instructor-led course is often the best approach.

For one who is learning both a new means and a new end, instructor-led training is important because the instructor can adjust the material to the student’s experience and mind-set. Most students need to see a new concept expressed in a variety of ways before “the penny drops.” Experienced instructors accumulate a large repertory of examples and analogies to get students over the many thresholds in learning a new topic.

When a whole new paradigm is being taught, instructor-led training goes only so far. Experience is the necessary teacher, and an experienced mentor guiding a pilot project will accelerate the process of absorbing a new discipline. In this approach, development staff usually participates in instructor-led training appropriate to their role before beginning the development project; thereafter a mentor will assist at each stage of development in adopting the lessons of the course.

To clarify the training and migration approaches that can be taken, several migration patterns can be described. Each migration pattern addresses the unique training requirements for different groups. We’ll present the different migration patterns by giving examples from our client base. For each pattern, we’ll define the background of the group, their objectives, and a suggested migration strategy.

Audience: Mainframe developers with COBOL experience.
Objectives: Develop applets and Java-based CGI programs or Servlets.
Company Context: Read data from a DB2 mainframe database.
Migration Strategy: Combination of CBT and Instructor-led training with mentoring.
  • CBT: Internet Development and HTML.
  • Instructor-led course: Introduction to Java Programming for developers and Fundamentals of Java for project managers.
  • Instructor-led course: Object-Oriented Development for developers.
  • Instructor-led course: Advanced Java and Web Programming for developers.
  • Weekly meetings during which recently published material is presented in seminar form.
Audience: Systems and applications developers, most with C and some with C++ experience.
Objectives: Use Java applets in Web clients, Servlets in Web servers; write portable applications.
Company Context: Large range of hardware, software, and networking products requiring Web-based management; extensive use of Internet internally and externally.
Migration Strategy: Periodic internal course offerings; general availability of CBT and WBT.
  • Instructor-led courses: Introduction to Java Programming for developers and Fundamentals of Java for project managers.
  • WBT: Intranet and Distributed Web Application Architecture Patterns.
  • Instructor-led course: Object-Oriented Development in Java for developers.
  • Instructor-led courses: Half-day Advanced Topics (Threads, Coding and Design Patterns, JDBC, JavaBeans, RMI, Security, Management, Network Programming, etc.), as required for the specific project tasks at hand, for developers who have learned the Java basics.
Audience: Analysts, architects, and developers primarily using Visual Basic and PowerBuilder for front ends, and using C and some C++ in servers.
Objectives: Use Java in clients and servers where appropriate. Adopt applets and Servlets for Intranet and Extranet applications.
Company Context: Developer of client/server database applications. Large internal investment in relational database skills and library support. Legacy relational databases that need to be accessed.
Migration Strategy: Broad adoption of object-oriented development; carefully targeted adoption of Java in specific client projects. Training usually applied in the context of specific projects using the new technology.
  • Instructor-led course: Object-Oriented Analysis and Design for analysts, architects, and developers.
  • Mentoring and workshops during requirements analysis.
  • Instructor-led course: Introduction to Java Programming for developers and Fundamentals of Java for project managers.
  • CBT or WBT: HTML Programming and Web Page Design.
  • Instructor-led course: Java Applet Programming for Web GUI developers.
  • Instructor-led course: Distributed Application Development in Java for developers with emphasis on JDBC, component technology, and JavaBeans.
The challenge in migrating to Java is the very wide range of technologies covered by the Java packages and the wide range of applications that can benefit from them. The keys to success are systematic exploration of the possibilities and a multi-faceted approach to training your staff that leverages their current skill set and background.