Canadian Information Processing Society

 

CIPS logo

 

 

 

CIPS Connections -- Current Articles

2/21/2003 10:57:10 AM
Sun Java Expert
Interview with Ramesh Nagappan
by Stephen Ibaraki, I.S.P., Capilano College

This week, Stephen Ibaraki, I.S.P., has an exclusive interview with noted international Java expert, and author, RAMESH NAGAPPAN.

Ramesh Nagappan is an experienced software architect, who specializes in Java, XML and CORBA based distributed computing architectures for Internet/Intranet based business applications, Application integration, Enterprise messaging and Web services. He has co-authored books on J2EE, EAI and Web services. He is an active contributor to Java/XML based open source applications and also a frequent speaker at industry conferences especially on Java and XML. Before he hooked on to Java and CORBA, he worked as a research engineer for developing software application solutions for CAD/CAM, Fluid dynamics, System simulation and Aerodynamics.

Currently Ramesh works for Sun Microsystems, Burlington, MA as an Enterprise Java architect for Sun Java Center. He graduated from Harvard University specializing in applied sciences.

Important Disclaimer: The following contents addressed by ‘Ramesh Nagappan’ are based on his personal endeavor and thus does not reflect any official stance of his employer ‘Sun Microsystems’. Sun Microsystems is not responsible for any inaccuracies in the following contents.

Discussion:
Q: You have such a long and distinguished career in computing. Thank you for agreeing to this interview and sharing your insights and years of experience with the audience.

A: It’s my pleasure, Thank you. I am very glad to have this opportunity for sharing my experiences with you all.


Q: Your experiences as a widely known JAVA expert would be of benefit to many veterans. Can you detail your personal history and how you came to write? What personally prompted you to enter the computing field? What led you to becoming a noted expert on JAVA development?

A: Looking back, I spent my early years growing up in India and received my Bachelors in Mechanical engineering and Masters in Industrial automation. I started to work as a Research Engineer at an Indian R&D establishment involved with research activities around scientific computation and mathematical simulation.

After a while, I had an opportunity to work for General Electric, NY where I was involved with computer-aided-engineering and automation projects related to design and development of Gas turbines and Power systems. With lots of passion towards Graphics applications development using Unix, C and C++, I moved to PTC where I immersed myself with software applications meant for implementing CAD/CAM, Mechanical design and systems simulation. In the mean time, I also slowly got hooked on to development concepts of Client/Server and Distributed computing applications particularly using CORBA and Java.

With my scientific computing background, I always felt a gap about my knowledge in business computing. So I went to Harvard University and pursued an applied sciences graduate programme with a concentration on Computer science. After my Harvard graduation, I switched my focus towards developing business and enterprise applications using Java and CORBA based technologies.

With my overwhelming passion towards Java, later I joined with Sun Microsystems here at Burlington, MA (USA) and currently I am working as an Enterprise Java Architect at the Sun Java Center involved with design and implementation of distributed computing architecture solutions for Internet based business applications, Enterprise messaging and Web services. If you ask about my career success as a Java architect, I would say it is directly attributable to the success of Java technology and its widespread adoption in industry. I started my early writing experience through Journals and Conference proceedings on subjects related to CAD/CAM, Expert systems and Robotics. After all those changes in my career and over a long pause, my manager Sunil Mathew and my friends at Sun Microsystems inspired me to write especially to share my experiences with the developer community. Since then, I have been writing and it has almost become part of my life. My writing would’ve not happened much without my wife and son’s support, as they own the major share of helping me and understanding my schedules.


Q: Ramesh can you detail where you see these technologies and environments developing in the next two to five years:

  • Enterprise Java Architecture, J2EE based EAI; CORBA
  • XML-based distributed computing architectures for Internet applications, enterprise messaging, and Web services.

A: If you take a closer look on the adoption of Java in industry, over these years its widespread acceptance came especially from its J2EE and J2ME technologies. Today most organizations adopt “J2EE” as the core-platform of choice for building multi-tier, platform independent, end-to-end architecture solutions for building Internet/Intranet applications, enterprise messaging, application integration and Web services. More importantly, I want you to note, J2EE is NOT a proprietary technology from a single company or a particular vendor solution. In fact, J2EE is a collaborative effort driven by a Java Community Process (JCP) participated by a long-list of industry vendors working together with an only primary goal of providing Java based architecture solutions with scalable, reliable and secure capabilities for the enterprise and to address a wide range of IT business requirements of today and tomorrow. Today the J2EE platform is well matured and provides component based, web enabled, distributed, secure application development solutions for the enterprise.

From a J2EE based EAI (Enterprise Application Integration) perspective the current J2EE Specifications (J2EE 1.3.1) and its implementation bring a full-fledged infrastructure that allows creating and deploying a complete EAI solution. To name a few features that enables J2EE based EAI are (i) Support for integration with databases, enterprise information systems and legacy applications (ex. J2EE Connectors) (ii) Support for enterprise messaging (ex. JMS) (iii) Support for Distributed transactions (ex. JTA & JTS) (iv) Support for propagation of security context with back-end systems (ex. JAAS, JGSS) (v) Support for naming and directory services (ex. JNDI) (vi) Support for XML (ex. JAXP, JAXB, JAXM). Further more, to establish integration with non-Java applications, J2EE also defines support for implementing and interfacing with CORBA or RMI/IIOP based applications and components, which allows encapsulating those non-Java application interfaces.

The introduction of XML based techniques for defining structured, self-describing, portable data is well embraced by the industry today especially for enabling communication with text-based, human readable and using a standard message format. Using XML as a message format during communication between applications promotes interoperability between heterogeneous applications irrespective of their underlying implementation differences and residing platforms. Lately the emergence of XML Web services is considered as the next phase of distributed computing, which allows exposing applications as ‘Services’ enabling the exchange of information between applications across the Internet using XML based standards like SOAP, UDDI, WSDL and ebXML and adopting industry standard protocols like HTTP, SMTP etc. Using these industry standards, enabling Web services allows encapsulating existing applications as services and allows publishing them in public/private registries, so that they are discoverable and accessible via Internet. These services deliver XML-based data on the wire and are exposed for use on the Internet, which can be dynamically located, subscribed, and accessed using a wide range of computing platforms, handheld devices, appliances, and so on.

If you combine the potential of a J2EE platform and XML, it offers a standard framework for Internet applications, Business-to-Business, Web services and interoperable inter-application communication. In the next five years, I am sure to say and strongly believe that J2EE and XML will continue to make huge strides in enterprise computing especially by delivering open-standards based Java/XML solution addressing the strategic requirements of the businesses, organizations of the future.


Q: With your extensive background in architecting and developing secure web services using Java, can your share specific examples, solutions, and tips in this area? Can you describe how to develop Web services solutions using Sun Java Web Services Developer Pack (JWSDP 1.0) APIs and how to expose your J2EE applications as Web services?

A. Here is a complete excerpt from my book – “Developing Java Web services – Wiley Press” on “How to develop Web services, especially exposing your J2EE applications as Web services”. I think this excerpt would give a more appropriate explanation than me discussing a long story.

“In a typical implementation, a J2EE-based Web services model defines another way of exposing their business components similar to Web applications and without changing the architectural model or code of the existing J2EE components. For example, in a J2EE-based application server environment J2EE components can be exposed for remote access through RMI/IIOP. In the case of a Web service provider using a J2EE environment, in addition to RMI/IIOP, it also is possible to expose those components as a ‘service’ via SOAP interfaces and WSDL and then invoke the exposed services by sending and receiving SOAP-based requests/responses or messages.

Today, most Web services platform providers and J2EE application server vendors have released their supporting toolsets for exposing the J2EE components such as EJBs and Servlets as Web services. Typically, these tools provide functionality to generate WSDL-based service descriptions and SOAP based service interface classes, which send and receive SOAP messages based on the services defined in the WSDL.

The following steps are commonly involved in creating Web services from a J2EE-based application component:

  1. Select a J2EE based Web services platform provider, which provides a consistent platform for building and deploying Web services over the J2EE applications.
  2. Define a Web service enabled application and its behavior.
    • Select the potential J2EE components (for example, EJBs, Servlets, and JMS applications) that are required to be exposed as services or using the existing services.
    • Choose the communication model (RPC-based synchronous or messaging-based asynchronous) depending upon the required behavior of the underlying components (for example, Session or Entity EJBs using RPC-based communication or JMS applications using messaging-based communication).
    • Ensure that the service uses only built-in/custom data types mapping for XML and Java supported by the Web services container. This applies only to RPC based communication model only.
  3. Develop the Web service by writing the interfaces required for accessing the exposed components (for example, EJBs, Servlets, and JMS applications).
    • Develop the potential J2EE component (for example, EJBs, Servlets, and JMS applications) that are required and deploy them in a J2EE-compliant container. Ensure that the data types used by the components are supported in the XML/Java mappings defined by the provider.
    • Implement the service as SOAP interfaces or message handlers.
  4. Assemble the required components into a required structure (defined by the Web services platform provider), additionally creating the deployment descriptors for the services (as defined by the Web services platform provider) and package them as a deployable EAR (J2EE application).
    • Most Web service platform vendors provide utility tools to generate Web services components (SOAP interfaces) by introspecting the components (especially its methods and values) and mapping them to its supported data types.
    • Also it is important to note, the upcoming release of the J2EE 1.4 specification is expected to provide a complete J2EE-based Web services platform and would enable the deployment of J2EE components as Web services.
  5. Deploy the Web service components in the J2EE based Web services runtime environment and make them available to its remote clients (based on the required protocol bindings such as HTTP and SMTP).
  6. Create test clients for invoking the deployed Web services.
  7. Register and publish your Web service in a UDDI registry, in case you require enabling the service available by searching public/private UDDI registries for Web services.

These steps are common based on the implementations available from most popular Web services platform vendors. Perhaps in the future, implementation may vary, based on emerging J2EE standards for Web services.

Java Web Services Developer Pack (JWSDP)
Sun Microsystems as part of its Java community process has already released its Java API for Web Services for the developer community as the Java Web Services Developer Pack (JWSDP). It provides a full-fledged solution package for developing and testing Web services using the Java APIs. In addition, leading Web services platforms providers like Systinet, CapeClear, and Mind Electric and leading J2EE implementation vendors like BEA, IBM, and SunONE also released their Web service capabilities, adopting a Java platform and supporting Java APIs for Web services as per JWSDP.

The JWSDP 1.0 provides a one-stop Java API solution for building Web services using Java platform. The key API components include the following:

  • Java API for XML Messaging (JAXM)
  • Java API for XML Processing (JAXP)
  • Java API for XML Registries (JAXR)
  • Java API for XML Binding (JAXB)
  • Java API for XML-Based RPC (JAX-RPC)
  • Java WSDP Registry Server (JWSDP)

Leading J2EE application server vendors already extended their support to this effort and also started releasing their JWSDP implementation for enabling Webservices in J2EE environment. “

For more practical information and programming steps, I would recommend reading our book “Developing Java Web services: Architecting and Developing Java Web services – Ramesh Nagappan, Robert Skoczylas and Rima Patel Sriganesh – Wiley Press, December 2002”. The code examples for the book chapters are available free for download at: http://www.wiley.com/compbooks/nagappan


Q: What examples can you share from your work on the book, Professional J2EE EAI?

A: Please take a look at our book chapters posted at the java.sun.com bookshelf - Web URL at - http://developer.java.sun.com/developer/Books/j2ee/professional_j2ee/. You will find couple of chapters from our book “Professional J2EE EAI – Wrox Press”.


Q: Can you comment on the open source movement and where it’s heading?

A: It is more of a political question to comment on! Most of us think that ‘Open Source’ is an alternative or a replacement to “Proprietary vendor’ developed software, But I think that is wrong! For my eyes, Open source offers opportunities for community based development and it also sets and raises the BAR for the IT industry expectations and also its competing implementation vendors. These days, I see a lot of interests in open source efforts with contributions also from leading IT vendors like Sun, IBM and so on. I think this growing open source popularity may change the faces of those proprietary solution providers making them to understand the community interests.


Q: You have your finger on the pulse of future trends. For those who have long established careers in computing but wish to change, what five computing areas would you recommend that they should focus on?


A: Based on current IT industry trends, I guess the following technologies are promoted with lot of hype and importance by the IT industry and I am sure an experienced professional is able to grab them easily with little more work and dedication. :

  1. XML Web services
  2. Internet and Application Security
  3. Pervasive computing for handheld devices
  4. B2B application integration
  5. Biometrics computing


Q: You are an international and well-respected architect on Java development and its pitfalls and shortcomings. With your extensive experience, you have developed solutions and techniques for improving performance. What are your top specific solutions for major Java programming problems?

A: Top of my head, I don’t find any magic answer or solution to identify all your Java development pitfalls and provide workarounds for improving performance. If you are a Java newbie and if you consider yourself lacking fundamentals about using the Java platform and APIs, my first suggestion is asking you to enrich your skills in the Java language and understanding the basics of the Java platform. Then I strongly recommend upon following better coding standards and to adopt industry best practices and design patterns.

Some of my key thoughts on how to improve performance and to avoid pitfalls in an application development process are as follows:

  • Always choose to follow good coding standards and adopt industry best practices and design patterns. This will help you avoiding common pitfalls, reduce possible issues and improve efficiency of your Java code.
  • Understand your application development and deployment environment well enough even before start coding. Always decide on a reliable, scalable and secure hardware and software environment.
  • Define a process model to find out the bottlenecks of your Java code and application environment.
  • Always keep in mind; Performance isn’t an add-on so it must be part of each step of your development process.
  • Don’t assume things without a firm design/architectural prototype, what works for one application may not work for another.


Q: Describe future book titles and articles can we expect from you?

A: At this time I don’t have any immediate plans of writing, but I do have plans to write a book on implementing Security focusing on the emerging Web services security standards and infrastructure.


Q: What are the hottest topics that all IT professionals must know to be successful in the short term and long term?

A. As I mentioned earlier, the hottest topics of today are around XML Web services, Pervasive computing and application security as I see a big momentum of industry effort currently backing up those areas. In long term, I always recommend adopting open standards based application development especially using Java and XML. Choosing proprietary technologies locks you up to a specific vendor platform and language and it is definitely not a good idea.


Q: What would be your recommended top five references for the serious Java developer?

A: For a serious Java developer depending upon his/her focus, I usually recommend the following Web pointers as a good source of information:

  1. http://developer.java.sun.com/developer/infodocs/ - where you find documentation for development needs including J2EE, J2ME and Java Web services. You also find tutorial, code samples, articles, user guides etc.
  2. Java Blueprints site (http://java.sun.com/blueprints/) - Where you find documents discussing guidelines, proven solutions, code, performance tuning, best practices, design patterns to aid your application development especially for enterprise, wireless, web services applications.
  3. J2EE Design patterns Catalog (http://java.sun.com/blueprints/patterns/), which provides a catalog of patterns especially for designing enterprise class applications. You may also consider having “Core J2EE Patterns – Deepak Alur, John Crupi and Dan Malks” book from Sun Press, which provides a wealth of information on implementing J2EE patterns.
  4. Get certified with Sun Java Certifications (http://suned.sun.com/US/certification/java/index.html) which will increase you career development potential and enrich your confidence in development projects.
  5. http://www.javaworld.com and http://www.theserverside.com are two good Java resources where I always look for tips, tricks and developer experiences etc.

If you are looking for any resource or a suggestion especially on your Java development, I would be very happy to help you.


Q: What changes do you see for the future of computing, conducting business, and the use of the Internet?

A: Looking into the current IT industry trends, I see the future of computing would be more based on standards driven and service centric business applications accessible through heterogeneous systems, devices and applications. With this continuing rapid adoption of Internet, the brick and mortar infrastructures for conducting businesses may fade and the day is not too far to see the Internet as the primary source for exploring business and obtaining all information.


Q: What would you do different if you started again, having gone through this authoring experience over the years?

A: I may go back to my old drawing boards doing engineering design and computing for mechanical or aeronautical engineering industry. Lately, I have developed some interests in teaching especially my favorite, distributed computing technologies.


Q: It’s a blank slate, what added comments would you like to give to enterprise corporations and organizations?

A: Here are my quick thoughts:

  1. Consider the value of best-in-breed IT vendor products brought through competition based on open standards and community processes.
  2. Consider the value of portability of data, platform-neutral application development solutions.
  3. Consider reliable, scaleable, and secure infrastructure and solutions for building and deploying your Web applications and Web Services.


Q: Thank you for sharing your valuable insights with us today and we look forward to reading your books, and articles.

A: I hope it helps! Thanks to you and the CIPS team for extending me this opportunity.

 

 

 

Copyright © 2000 - 2002 Canadian Information Processing Society All rights reserved.