Careers: Interviews
Sun Java Expert
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:
-
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.
- 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.
- 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.
- 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.
-
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 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. :
- XML Web services
- Internet and
Application Security
- Pervasive computing
for handheld devices
- B2B application
integration
- 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:
-
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.
- 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.
- 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.
- 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 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:
- 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 opportunity.
|