CIPS Connections -- Current Articles
Sun Java Expert
Interview with Ramesh Nagappan
by Stephen Ibaraki, I.S.P.,
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.
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
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:
- Select a J2EE based Web
services platform provider, which provides a consistent platform for
building and deploying Web services over the J2EE applications.
- Define a Web service
enabled application and its behavior.
Develop the Web
service by writing the interfaces required for accessing the exposed
components (for example, EJBs, Servlets, and JMS applications).
- Select the potential
J2EE components (for example, EJBs, Servlets, and JMS applications)
that are required to be exposed as services or using the existing
- 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.
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).
- 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.
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).
Create test clients for
invoking the deployed Web services.
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
- 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
- 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.
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
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
- Java API for XML
- Java API for XML
- Java API for XML
- Java API for XML-Based
- Java WSDP Registry
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
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
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
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. :
- XML Web services
- Internet and
- Pervasive computing
for handheld devices
- B2B application
- 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
- Always keep in mind;
Performance isn’t an add-on so it must be part of each step of your
- 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
Q: What would be your recommended top five references for the serious Java
A: For a serious Java developer depending upon his/her focus, I usually
recommend the following Web pointers as a good source of information:
- where you find documentation for development needs including J2EE,
J2ME and Java Web services. You also find tutorial, code samples,
articles, user guides etc.
- Java Blueprints site
- 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
- J2EE Design 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.
- 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.
- 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
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:
- Consider the value of
best-in-breed IT vendor products brought through competition based on
open standards and community processes.
- Consider the value of
portability of data, platform-neutral application development solutions.
- 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